[{"data":1,"prerenderedAt":841},["ShallowReactive",2],{"guide-\u002Fguides\u002Fvoices":3,"developer-code-1kdaqai":834,"developer-code-1k1ho7l":835,"developer-code-a2123w":836,"developer-code-d1rawx":837,"developer-code-zdm0y1":838,"developer-code-clu4z8":839,"developer-code-1kv66hx":840},{"id":4,"title":5,"body":6,"description":825,"extension":826,"meta":827,"navigation":828,"path":830,"seo":831,"stem":832,"__hash__":833},"guides\u002Fguides\u002Fvoices.md","Voice Cloning API",{"type":7,"value":8,"toc":817},"minimark",[9,18,23,90,94,109,148,298,304,308,322,355,361,561,568,572,575,581,659,671,748,752,755,783,787,813],[10,11,12,13,17],"p",{},"The VisionStory Voice Cloning API turns an audio sample into a reusable ",[14,15,16],"code",{},"voice_id",". Choose a public voice or clone your own, then use it for text-to-speech and lip-synced talking-avatar video generation.",[19,20,22],"h2",{"id":21},"voice-cloning-api-endpoints","Voice cloning API endpoints",[24,25,26,42],"table",{},[27,28,29],"thead",{},[30,31,32,36,39],"tr",{},[33,34,35],"th",{},"Method",[33,37,38],{},"Path",[33,40,41],{},"What it does",[43,44,45,61,76],"tbody",{},[30,46,47,53,58],{},[48,49,50],"td",{},[14,51,52],{},"GET",[48,54,55],{},[14,56,57],{},"\u002Fapi\u002Fv1\u002Fvoices",[48,59,60],{},"List public voices and your cloned voices",[30,62,63,68,73],{},[48,64,65],{},[14,66,67],{},"POST",[48,69,70],{},[14,71,72],{},"\u002Fapi\u002Fv1\u002Fvoice",[48,74,75],{},"Clone a voice from an audio sample",[30,77,78,83,87],{},[48,79,80],{},[14,81,82],{},"DELETE",[48,84,85],{},[14,86,72],{},[48,88,89],{},"Delete one of your cloned voices",[19,91,93],{"id":92},"list-public-and-cloned-voices","List public and cloned voices",[10,95,96,97,100,101,104,105,108],{},"The list response has two groups: ",[14,98,99],{},"public_voices"," (ready to use, like ",[14,102,103],{},"Alice",") and ",[14,106,107],{},"my_voices"," (cloned by you):",[110,111,116],"pre",{"className":112,"code":113,"language":114,"meta":115,"style":115},"language-bash shiki shiki-themes github-light github-dark","curl -s -H \"X-API-Key: $VISIONSTORY_API_KEY\" https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvoices\n","bash","",[14,117,118],{"__ignoreMap":115},[119,120,123,127,131,134,138,142,145],"span",{"class":121,"line":122},"line",1,[119,124,126],{"class":125},"sScJk","curl",[119,128,130],{"class":129},"sj4cs"," -s",[119,132,133],{"class":129}," -H",[119,135,137],{"class":136},"sZZnC"," \"X-API-Key: ",[119,139,141],{"class":140},"sVt8B","$VISIONSTORY_API_KEY",[119,143,144],{"class":136},"\"",[119,146,147],{"class":136}," https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvoices\n",[110,149,153],{"className":150,"code":151,"language":152,"meta":115,"style":115},"language-python shiki shiki-themes github-light github-dark","import os\nimport requests\n\nheaders = {\"X-API-Key\": os.environ[\"VISIONSTORY_API_KEY\"]}\nresponse = requests.get(\"https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvoices\", headers=headers, timeout=10)\nresp_data = response.json()\nprint(len(resp_data[\"data\"][\"public_voices\"]))\nprint(len(resp_data[\"data\"][\"my_voices\"]))\n","python",[14,154,155,164,172,179,203,240,251,278],{"__ignoreMap":115},[119,156,157,161],{"class":121,"line":122},[119,158,160],{"class":159},"szBVR","import",[119,162,163],{"class":140}," os\n",[119,165,167,169],{"class":121,"line":166},2,[119,168,160],{"class":159},[119,170,171],{"class":140}," requests\n",[119,173,175],{"class":121,"line":174},3,[119,176,178],{"emptyLinePlaceholder":177},true,"\n",[119,180,182,185,188,191,194,197,200],{"class":121,"line":181},4,[119,183,184],{"class":140},"headers ",[119,186,187],{"class":159},"=",[119,189,190],{"class":140}," {",[119,192,193],{"class":136},"\"X-API-Key\"",[119,195,196],{"class":140},": os.environ[",[119,198,199],{"class":136},"\"VISIONSTORY_API_KEY\"",[119,201,202],{"class":140},"]}\n",[119,204,206,209,211,214,217,220,224,226,229,232,234,237],{"class":121,"line":205},5,[119,207,208],{"class":140},"response ",[119,210,187],{"class":159},[119,212,213],{"class":140}," requests.get(",[119,215,216],{"class":136},"\"https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvoices\"",[119,218,219],{"class":140},", ",[119,221,223],{"class":222},"s4XuR","headers",[119,225,187],{"class":159},[119,227,228],{"class":140},"headers, ",[119,230,231],{"class":222},"timeout",[119,233,187],{"class":159},[119,235,236],{"class":129},"10",[119,238,239],{"class":140},")\n",[119,241,243,246,248],{"class":121,"line":242},6,[119,244,245],{"class":140},"resp_data ",[119,247,187],{"class":159},[119,249,250],{"class":140}," response.json()\n",[119,252,254,257,260,263,266,269,272,275],{"class":121,"line":253},7,[119,255,256],{"class":129},"print",[119,258,259],{"class":140},"(",[119,261,262],{"class":129},"len",[119,264,265],{"class":140},"(resp_data[",[119,267,268],{"class":136},"\"data\"",[119,270,271],{"class":140},"][",[119,273,274],{"class":136},"\"public_voices\"",[119,276,277],{"class":140},"]))\n",[119,279,281,283,285,287,289,291,293,296],{"class":121,"line":280},8,[119,282,256],{"class":129},[119,284,259],{"class":140},[119,286,262],{"class":129},[119,288,265],{"class":140},[119,290,268],{"class":136},[119,292,271],{"class":140},[119,294,295],{"class":136},"\"my_voices\"",[119,297,277],{"class":140},[10,299,300,301,303],{},"Always use a ",[14,302,16],{}," returned by this endpoint — never invent one.",[19,305,307],{"id":306},"clone-an-ai-voice-from-audio","Clone an AI voice from audio",[10,309,310,311,313,314,317,318,321],{},"Send an audio sample of the voice, get back a ",[14,312,16],{},". Provide the audio as either a public HTTPS URL or base64 ",[14,315,316],{},"inline_data"," — exactly one of the two. The optional ",[14,319,320],{},"preview_text"," is synthesized with the new voice so you can hear the result immediately. The request is synchronous and takes about 15 seconds:",[110,323,325],{"className":112,"code":324,"language":114,"meta":115,"style":115},"curl -s -H \"X-API-Key: $VISIONSTORY_API_KEY\" -H \"Content-Type: application\u002Fjson\" -d '{\"audio_url\": \"https:\u002F\u002Fyour.site\u002Fsample.mp3\", \"preview_text\": \"How are you doing guys, this is my voice\"}' https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvoice\n",[14,326,327],{"__ignoreMap":115},[119,328,329,331,333,335,337,339,341,343,346,349,352],{"class":121,"line":122},[119,330,126],{"class":125},[119,332,130],{"class":129},[119,334,133],{"class":129},[119,336,137],{"class":136},[119,338,141],{"class":140},[119,340,144],{"class":136},[119,342,133],{"class":129},[119,344,345],{"class":136}," \"Content-Type: application\u002Fjson\"",[119,347,348],{"class":129}," -d",[119,350,351],{"class":136}," '{\"audio_url\": \"https:\u002F\u002Fyour.site\u002Fsample.mp3\", \"preview_text\": \"How are you doing guys, this is my voice\"}'",[119,353,354],{"class":136}," https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvoice\n",[10,356,357,358,360],{},"With a local file, base64-encode it into ",[14,359,316],{},":",[110,362,364],{"className":150,"code":363,"language":152,"meta":115,"style":115},"import base64\nimport os\nimport requests\n\nheaders = {\"X-API-Key\": os.environ[\"VISIONSTORY_API_KEY\"]}\n\nwith open(\"\u002Fpath\u002Fto\u002Faudio.mp3\", \"rb\") as f:\n    encoded = base64.b64encode(f.read()).decode(\"utf-8\")\n\npayload = {\n    \"inline_data\": {\"mime_type\": \"audio\u002Fmp3\", \"data\": encoded},\n    \"preview_text\": \"How are you doing guys, this is my voice\"\n}\nresponse = requests.post(\"https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvoice\", json=payload, headers=headers)  # takes ~15 s\nprint(response.json()[\"data\"][\"voice_id\"])\n",[14,365,366,373,379,385,389,405,409,436,451,456,467,492,503,509,543],{"__ignoreMap":115},[119,367,368,370],{"class":121,"line":122},[119,369,160],{"class":159},[119,371,372],{"class":140}," base64\n",[119,374,375,377],{"class":121,"line":166},[119,376,160],{"class":159},[119,378,163],{"class":140},[119,380,381,383],{"class":121,"line":174},[119,382,160],{"class":159},[119,384,171],{"class":140},[119,386,387],{"class":121,"line":181},[119,388,178],{"emptyLinePlaceholder":177},[119,390,391,393,395,397,399,401,403],{"class":121,"line":205},[119,392,184],{"class":140},[119,394,187],{"class":159},[119,396,190],{"class":140},[119,398,193],{"class":136},[119,400,196],{"class":140},[119,402,199],{"class":136},[119,404,202],{"class":140},[119,406,407],{"class":121,"line":242},[119,408,178],{"emptyLinePlaceholder":177},[119,410,411,414,417,419,422,424,427,430,433],{"class":121,"line":253},[119,412,413],{"class":159},"with",[119,415,416],{"class":129}," open",[119,418,259],{"class":140},[119,420,421],{"class":136},"\"\u002Fpath\u002Fto\u002Faudio.mp3\"",[119,423,219],{"class":140},[119,425,426],{"class":136},"\"rb\"",[119,428,429],{"class":140},") ",[119,431,432],{"class":159},"as",[119,434,435],{"class":140}," f:\n",[119,437,438,441,443,446,449],{"class":121,"line":280},[119,439,440],{"class":140},"    encoded ",[119,442,187],{"class":159},[119,444,445],{"class":140}," base64.b64encode(f.read()).decode(",[119,447,448],{"class":136},"\"utf-8\"",[119,450,239],{"class":140},[119,452,454],{"class":121,"line":453},9,[119,455,178],{"emptyLinePlaceholder":177},[119,457,459,462,464],{"class":121,"line":458},10,[119,460,461],{"class":140},"payload ",[119,463,187],{"class":159},[119,465,466],{"class":140}," {\n",[119,468,470,473,476,479,482,485,487,489],{"class":121,"line":469},11,[119,471,472],{"class":136},"    \"inline_data\"",[119,474,475],{"class":140},": {",[119,477,478],{"class":136},"\"mime_type\"",[119,480,481],{"class":140},": ",[119,483,484],{"class":136},"\"audio\u002Fmp3\"",[119,486,219],{"class":140},[119,488,268],{"class":136},[119,490,491],{"class":140},": encoded},\n",[119,493,495,498,500],{"class":121,"line":494},12,[119,496,497],{"class":136},"    \"preview_text\"",[119,499,481],{"class":140},[119,501,502],{"class":136},"\"How are you doing guys, this is my voice\"\n",[119,504,506],{"class":121,"line":505},13,[119,507,508],{"class":140},"}\n",[119,510,512,514,516,519,522,524,527,529,532,534,536,539],{"class":121,"line":511},14,[119,513,208],{"class":140},[119,515,187],{"class":159},[119,517,518],{"class":140}," requests.post(",[119,520,521],{"class":136},"\"https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvoice\"",[119,523,219],{"class":140},[119,525,526],{"class":222},"json",[119,528,187],{"class":159},[119,530,531],{"class":140},"payload, ",[119,533,223],{"class":222},[119,535,187],{"class":159},[119,537,538],{"class":140},"headers)  ",[119,540,542],{"class":541},"sJ8bj","# takes ~15 s\n",[119,544,546,548,551,553,555,558],{"class":121,"line":545},15,[119,547,256],{"class":129},[119,549,550],{"class":140},"(response.json()[",[119,552,268],{"class":136},[119,554,271],{"class":140},[119,556,557],{"class":136},"\"voice_id\"",[119,559,560],{"class":140},"])\n",[10,562,563,567],{},[564,565,566],"strong",{},"Sample requirements:"," provide a clean recording of a single speaker. Supported formats are AVI, MP3, MP4, M4A, and WAV, up to 30 MB. How many cloned voices you can keep at once depends on your subscription plan.",[19,569,571],{"id":570},"use-a-cloned-voice-in-a-video","Use a cloned voice in a video",[10,573,574],{},"Two places a voice applies when creating a video:",[10,576,577,580],{},[564,578,579],{},"Text script"," — the voice reads your text:",[110,582,585],{"className":583,"code":584,"language":526,"meta":115,"style":115},"language-json shiki shiki-themes github-light github-dark","{\n  \"model_id\": \"vs_character_v4\",\n  \"avatar_id\": \"YOUR_AVATAR_ID\",\n  \"text_script\": { \"text\": \"Hello!\", \"voice_id\": \"YOUR_VOICE_ID\", \"speech_rate\": \"normal\" }\n}\n",[14,586,587,592,605,617,655],{"__ignoreMap":115},[119,588,589],{"class":121,"line":122},[119,590,591],{"class":140},"{\n",[119,593,594,597,599,602],{"class":121,"line":166},[119,595,596],{"class":129},"  \"model_id\"",[119,598,481],{"class":140},[119,600,601],{"class":136},"\"vs_character_v4\"",[119,603,604],{"class":140},",\n",[119,606,607,610,612,615],{"class":121,"line":174},[119,608,609],{"class":129},"  \"avatar_id\"",[119,611,481],{"class":140},[119,613,614],{"class":136},"\"YOUR_AVATAR_ID\"",[119,616,604],{"class":140},[119,618,619,622,625,628,630,633,635,637,639,642,644,647,649,652],{"class":121,"line":181},[119,620,621],{"class":129},"  \"text_script\"",[119,623,624],{"class":140},": { ",[119,626,627],{"class":129},"\"text\"",[119,629,481],{"class":140},[119,631,632],{"class":136},"\"Hello!\"",[119,634,219],{"class":140},[119,636,557],{"class":129},[119,638,481],{"class":140},[119,640,641],{"class":136},"\"YOUR_VOICE_ID\"",[119,643,219],{"class":140},[119,645,646],{"class":129},"\"speech_rate\"",[119,648,481],{"class":140},[119,650,651],{"class":136},"\"normal\"",[119,653,654],{"class":140}," }\n",[119,656,657],{"class":121,"line":205},[119,658,508],{"class":140},[10,660,661,664,665,668,669,360],{},[564,662,663],{},"Audio script with voice change"," — you supply the audio, and ",[14,666,667],{},"voice_change: true"," re-voices it with the selected ",[14,670,16],{},[110,672,674],{"className":583,"code":673,"language":526,"meta":115,"style":115},"{\n  \"model_id\": \"vs_character_v4\",\n  \"avatar_id\": \"YOUR_AVATAR_ID\",\n  \"audio_script\": { \"audio_url\": \"https:\u002F\u002Fyour.site\u002Fnarration.mp3\", \"voice_change\": true, \"voice_id\": \"YOUR_VOICE_ID\", \"denoise\": true }\n}\n",[14,675,676,680,690,700,744],{"__ignoreMap":115},[119,677,678],{"class":121,"line":122},[119,679,591],{"class":140},[119,681,682,684,686,688],{"class":121,"line":166},[119,683,596],{"class":129},[119,685,481],{"class":140},[119,687,601],{"class":136},[119,689,604],{"class":140},[119,691,692,694,696,698],{"class":121,"line":174},[119,693,609],{"class":129},[119,695,481],{"class":140},[119,697,614],{"class":136},[119,699,604],{"class":140},[119,701,702,705,707,710,712,715,717,720,722,725,727,729,731,733,735,738,740,742],{"class":121,"line":181},[119,703,704],{"class":129},"  \"audio_script\"",[119,706,624],{"class":140},[119,708,709],{"class":129},"\"audio_url\"",[119,711,481],{"class":140},[119,713,714],{"class":136},"\"https:\u002F\u002Fyour.site\u002Fnarration.mp3\"",[119,716,219],{"class":140},[119,718,719],{"class":129},"\"voice_change\"",[119,721,481],{"class":140},[119,723,724],{"class":129},"true",[119,726,219],{"class":140},[119,728,557],{"class":129},[119,730,481],{"class":140},[119,732,641],{"class":136},[119,734,219],{"class":140},[119,736,737],{"class":129},"\"denoise\"",[119,739,481],{"class":140},[119,741,724],{"class":129},[119,743,654],{"class":140},[119,745,746],{"class":121,"line":205},[119,747,508],{"class":140},[19,749,751],{"id":750},"delete-a-custom-voice","Delete a custom voice",[10,753,754],{},"Deleting only affects your own cloned voices; videos already generated with it are unaffected:",[110,756,758],{"className":112,"code":757,"language":114,"meta":115,"style":115},"curl -s -X DELETE -H \"X-API-Key: $VISIONSTORY_API_KEY\" \"https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvoice?voice_id=YOUR_VOICE_ID\"\n",[14,759,760],{"__ignoreMap":115},[119,761,762,764,766,769,772,774,776,778,780],{"class":121,"line":122},[119,763,126],{"class":125},[119,765,130],{"class":129},[119,767,768],{"class":129}," -X",[119,770,771],{"class":136}," DELETE",[119,773,133],{"class":129},[119,775,137],{"class":136},[119,777,141],{"class":140},[119,779,144],{"class":136},[119,781,782],{"class":136}," \"https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvoice?voice_id=YOUR_VOICE_ID\"\n",[19,784,786],{"id":785},"related-visionstory-api-guides","Related VisionStory API guides",[788,789,790,799,806],"ul",{},[791,792,793,798],"li",{},[794,795,797],"a",{"href":796},"\u002Fguides\u002Favatars","Avatars"," — the character that speaks with your voice.",[791,800,801,805],{},[794,802,804],{"href":803},"\u002Fguides\u002Fquick-start","Quick start"," — generate your first video.",[791,807,808,812],{},[794,809,811],{"href":810},"\u002Freference","API reference"," — full request and response schemas.",[814,815,816],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":115,"searchDepth":166,"depth":166,"links":818},[819,820,821,822,823,824],{"id":21,"depth":166,"text":22},{"id":92,"depth":166,"text":93},{"id":306,"depth":166,"text":307},{"id":570,"depth":166,"text":571},{"id":750,"depth":166,"text":751},{"id":785,"depth":166,"text":786},"List public voices, clone a custom AI voice from an audio sample, and use its voice_id for text-to-speech or talking avatar video generation.","md",{},{"title":829,"order":181},"Voices","\u002Fguides\u002Fvoices",{"title":5,"description":825},"guides\u002Fvoices","p3RgTJClvNCW4v9E_NQLbacliNiAVLG-pYzs_4TX4sA","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFA657\">curl\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> -s\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> -H\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> \"X-API-Key: \u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">$VISIONSTORY_API_KEY\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvoices\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF7B72\">import\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> os\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF7B72\">import\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> requests\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">headers \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> {\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"X-API-Key\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: os.environ[\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"VISIONSTORY_API_KEY\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">]}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">response \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> requests.get(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvoices\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">headers\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">headers, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">timeout\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">10\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">resp_data \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> response.json()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79C0FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">len\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(resp_data[\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"data\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">][\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"public_voices\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">]))\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79C0FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">len\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(resp_data[\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"data\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">][\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"my_voices\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">]))\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFA657\">curl\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> -s\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> -H\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> \"X-API-Key: \u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">$VISIONSTORY_API_KEY\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> -H\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> \"Content-Type: application\u002Fjson\"\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> -d\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> '{\"audio_url\": \"https:\u002F\u002Fyour.site\u002Fsample.mp3\", \"preview_text\": \"How are you doing guys, this is my voice\"}'\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvoice\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF7B72\">import\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> base64\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF7B72\">import\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> os\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF7B72\">import\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> requests\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">headers \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> {\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"X-API-Key\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: os.environ[\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"VISIONSTORY_API_KEY\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">]}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF7B72\">with\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> open\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"\u002Fpath\u002Fto\u002Faudio.mp3\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"rb\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">) \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">as\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> f:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">    encoded \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> base64.b64encode(f.read()).decode(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"utf-8\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">payload \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">    \"inline_data\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: {\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"mime_type\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"audio\u002Fmp3\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"data\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: encoded},\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">    \"preview_text\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"How are you doing guys, this is my voice\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">response \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> requests.post(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvoice\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">json\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">payload, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">headers\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">headers)  \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\"># takes ~15 s\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79C0FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(response.json()[\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"data\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">][\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"voice_id\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">])\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#7EE787\">  \"model_id\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"vs_character_v4\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#7EE787\">  \"avatar_id\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"YOUR_AVATAR_ID\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#7EE787\">  \"text_script\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: { \u003C\u002Fspan>\u003Cspan style=\"color:#7EE787\">\"text\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"Hello!\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#7EE787\">\"voice_id\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"YOUR_VOICE_ID\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#7EE787\">\"speech_rate\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"normal\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#7EE787\">  \"model_id\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"vs_character_v4\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#7EE787\">  \"avatar_id\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"YOUR_AVATAR_ID\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#7EE787\">  \"audio_script\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: { \u003C\u002Fspan>\u003Cspan style=\"color:#7EE787\">\"audio_url\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"https:\u002F\u002Fyour.site\u002Fnarration.mp3\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#7EE787\">\"voice_change\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">true\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#7EE787\">\"voice_id\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"YOUR_VOICE_ID\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#7EE787\">\"denoise\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">true\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFA657\">curl\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> -s\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> -X\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> DELETE\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> -H\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> \"X-API-Key: \u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">$VISIONSTORY_API_KEY\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> \"https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvoice?voice_id=YOUR_VOICE_ID\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",1788166855861]