Skip to content

Latest commit

ย 

History

31 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

text-to-demo

A Python CLI utility that turns text and media files (slides, screenshots, screen recordings or video clips) into a fully narrated, perfectly timed demo video.

Built for IT professionals, sysadmins, and support teams who want to treat instructional videos like infrastructure-as-code. Stop manually recording screen captures and voiceovers every time a UI element changes. Update the script, swap the media, re-compile your video, and publish it on YouTube and other video platforms.

You can now choose between Microsoft's high-speed cloud TTS (edge-tts) or a 100% local, private, and open-source neural TTS model (kokoro) as your voice narrative engine.

Available TTS Voices

Kokoro Local (Default)

A fully private, on-device engine featuring high-quality voices.

Voice Gender Locale Country / Language
af_heart (default) Female en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
af_alloy Female en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
af_aoede Female en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
af_bella Female en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
af_jessica Female en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
af_kore Female en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
af_nicole Female en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
af_nova Female en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
af_river Female en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
af_sarah Female en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
af_sky Female en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
am_adam Male en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
am_echo Male en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
am_eric Male en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
am_fenrir Male en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
am_liam Male en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
am_michael Male en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
am_onyx Male en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
am_puck Male en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
am_santa Male en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
bf_alice Female en-GB United Kingdom ๐Ÿ‡ฌ๐Ÿ‡ง
bf_emma Female en-GB United Kingdom ๐Ÿ‡ฌ๐Ÿ‡ง
bf_isabella Female en-GB United Kingdom ๐Ÿ‡ฌ๐Ÿ‡ง
bf_lily Female en-GB United Kingdom ๐Ÿ‡ฌ๐Ÿ‡ง
bm_daniel Male en-GB United Kingdom ๐Ÿ‡ฌ๐Ÿ‡ง
bm_fable Male en-GB United Kingdom ๐Ÿ‡ฌ๐Ÿ‡ง
bm_george Male en-GB United Kingdom ๐Ÿ‡ฌ๐Ÿ‡ง
bm_lewis Male en-GB United Kingdom ๐Ÿ‡ฌ๐Ÿ‡ง
ef_dora Female es-ES Spain ๐Ÿ‡ช๐Ÿ‡ธ
em_alex Male es-ES Spain ๐Ÿ‡ช๐Ÿ‡ธ
em_santa Male es-ES Spain ๐Ÿ‡ช๐Ÿ‡ธ
ff_siwis Female fr-FR France ๐Ÿ‡ซ๐Ÿ‡ท
hf_alpha Female hi-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
hf_beta Female hi-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
hm_omega Male hi-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
hm_psi Male hi-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
if_sara Female it-IT Italy ๐Ÿ‡ฎ๐Ÿ‡น
im_nicola Male it-IT Italy ๐Ÿ‡ฎ๐Ÿ‡น
jf_alpha Female ja-JP Japan ๐Ÿ‡ฏ๐Ÿ‡ต (Needs misaki[ja])
jf_gongitsune Female ja-JP Japan ๐Ÿ‡ฏ๐Ÿ‡ต (Needs misaki[ja])
jf_nezumi Female ja-JP Japan ๐Ÿ‡ฏ๐Ÿ‡ต (Needs misaki[ja])
jf_tebukuro Female ja-JP Japan ๐Ÿ‡ฏ๐Ÿ‡ต (Needs misaki[ja])
jm_kumo Male ja-JP Japan ๐Ÿ‡ฏ๐Ÿ‡ต (Needs misaki[ja])
pf_dora Female pt-BR Brazil ๐Ÿ‡ง๐Ÿ‡ท
pm_alex Male pt-BR Brazil ๐Ÿ‡ง๐Ÿ‡ท
pm_santa Male pt-BR Brazil ๐Ÿ‡ง๐Ÿ‡ท
zf_xiaobei Female zh-CN China ๐Ÿ‡จ๐Ÿ‡ณ (Needs misaki[zh])
zf_xiaoni Female zh-CN China ๐Ÿ‡จ๐Ÿ‡ณ (Needs misaki[zh])
zf_xiaoxiao Female zh-CN China ๐Ÿ‡จ๐Ÿ‡ณ (Needs misaki[zh])
zf_xiaoyi Female zh-CN China ๐Ÿ‡จ๐Ÿ‡ณ (Needs misaki[zh])
zm_yunjian Male zh-CN China ๐Ÿ‡จ๐Ÿ‡ณ (Needs misaki[zh])
zm_yunxi Male zh-CN China ๐Ÿ‡จ๐Ÿ‡ณ (Needs misaki[zh])
zm_yunxia Male zh-CN China ๐Ÿ‡จ๐Ÿ‡ณ (Needs misaki[zh])
zm_yunyang Male zh-CN China ๐Ÿ‡จ๐Ÿ‡ณ (Needs misaki[zh])

Edge-TTS (Microsoft Cloud)

Use the --engine edge flag to access a massive library of high-speed, multilingual voices.

Voice Gender Locale Country / Language
af-ZA-AdriNeural Female af-ZA South Africa ๐Ÿ‡ฟ๐Ÿ‡ฆ
af-ZA-WillemNeural Male af-ZA South Africa ๐Ÿ‡ฟ๐Ÿ‡ฆ
am-ET-MekdesNeural Female am-ET Ethiopia ๐Ÿ‡ช๐Ÿ‡น
am-ET-AmehaNeural Male am-ET Ethiopia ๐Ÿ‡ช๐Ÿ‡น
ar-AE-FatimaNeural Female ar-AE UAE ๐Ÿ‡ฆ๐Ÿ‡ช
ar-AE-HamdanNeural Male ar-AE UAE ๐Ÿ‡ฆ๐Ÿ‡ช
ar-BH-LailaNeural Female ar-BH Bahrain ๐Ÿ‡ง๐Ÿ‡ญ
ar-BH-AliNeural Male ar-BH Bahrain ๐Ÿ‡ง๐Ÿ‡ญ
ar-DZ-AminaNeural Female ar-DZ Algeria ๐Ÿ‡ฉ๐Ÿ‡ฟ
ar-DZ-IsmaelNeural Male ar-DZ Algeria ๐Ÿ‡ฉ๐Ÿ‡ฟ
ar-EG-SalmaNeural Female ar-EG Egypt ๐Ÿ‡ช๐Ÿ‡ฌ
ar-EG-ShakirNeural Male ar-EG Egypt ๐Ÿ‡ช๐Ÿ‡ฌ
ar-IQ-RanaNeural Female ar-IQ Iraq ๐Ÿ‡ฎ๐Ÿ‡ถ
ar-IQ-BasselNeural Male ar-IQ Iraq ๐Ÿ‡ฎ๐Ÿ‡ถ
ar-JO-SanaNeural Female ar-JO Jordan ๐Ÿ‡ฏ๐Ÿ‡ด
ar-JO-TaimNeural Male ar-JO Jordan ๐Ÿ‡ฏ๐Ÿ‡ด
ar-KW-NouraNeural Female ar-KW Kuwait ๐Ÿ‡ฐ๐Ÿ‡ผ
ar-KW-FahedNeural Male ar-KW Kuwait ๐Ÿ‡ฐ๐Ÿ‡ผ
ar-LB-LaylaNeural Female ar-LB Lebanon ๐Ÿ‡ฑ๐Ÿ‡ง
ar-LB-RamiNeural Male ar-LB Lebanon ๐Ÿ‡ฑ๐Ÿ‡ง
ar-LY-ImanNeural Female ar-LY Libya ๐Ÿ‡ฑ๐Ÿ‡พ
ar-LY-OmarNeural Male ar-LY Libya ๐Ÿ‡ฑ๐Ÿ‡พ
ar-MA-MounaNeural Female ar-MA Morocco ๐Ÿ‡ฒ๐Ÿ‡ฆ
ar-MA-JamalNeural Male ar-MA Morocco ๐Ÿ‡ฒ๐Ÿ‡ฆ
ar-OM-AyshaNeural Female ar-OM Oman ๐Ÿ‡ด๐Ÿ‡ฒ
ar-OM-AbdullahNeural Male ar-OM Oman ๐Ÿ‡ด๐Ÿ‡ฒ
ar-QA-AmalNeural Female ar-QA Qatar ๐Ÿ‡ถ๐Ÿ‡ฆ
ar-QA-MoazNeural Male ar-QA Qatar ๐Ÿ‡ถ๐Ÿ‡ฆ
ar-SA-ZariyahNeural Female ar-SA Saudi Arabia ๐Ÿ‡ธ๐Ÿ‡ฆ
ar-SA-HamedNeural Male ar-SA Saudi Arabia ๐Ÿ‡ธ๐Ÿ‡ฆ
ar-SY-AmanyNeural Female ar-SY Syria ๐Ÿ‡ธ๐Ÿ‡พ
ar-SY-LaithNeural Male ar-SY Syria ๐Ÿ‡ธ๐Ÿ‡พ
ar-TN-ReemNeural Female ar-TN Tunisia ๐Ÿ‡น๐Ÿ‡ณ
ar-TN-HediNeural Male ar-TN Tunisia ๐Ÿ‡น๐Ÿ‡ณ
ar-YE-MaryamNeural Female ar-YE Yemen ๐Ÿ‡พ๐Ÿ‡ช
ar-YE-SalehNeural Male ar-YE Yemen ๐Ÿ‡พ๐Ÿ‡ช
az-AZ-BanuNeural Female az-AZ Azerbaijan ๐Ÿ‡ฆ๐Ÿ‡ฟ
az-AZ-BabekNeural Male az-AZ Azerbaijan ๐Ÿ‡ฆ๐Ÿ‡ฟ
bg-BG-KalinaNeural Female bg-BG Bulgaria ๐Ÿ‡ง๐Ÿ‡ฌ
bg-BG-BorislavNeural Male bg-BG Bulgaria ๐Ÿ‡ง๐Ÿ‡ฌ
bn-BD-NabanitaNeural Female bn-BD Bangladesh ๐Ÿ‡ง๐Ÿ‡ฉ
bn-BD-PradeepNeural Male bn-BD Bangladesh ๐Ÿ‡ง๐Ÿ‡ฉ
bn-IN-TanishaaNeural Female bn-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
bn-IN-BashkarNeural Male bn-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
bs-BA-VesnaNeural Female bs-BA Bosnia ๐Ÿ‡ง๐Ÿ‡ฆ
bs-BA-GoranNeural Male bs-BA Bosnia ๐Ÿ‡ง๐Ÿ‡ฆ
ca-ES-JoanaNeural Female ca-ES Spain ๐Ÿ‡ช๐Ÿ‡ธ
ca-ES-EnricNeural Male ca-ES Spain ๐Ÿ‡ช๐Ÿ‡ธ
cs-CZ-VlastaNeural Female cs-CZ Czechia ๐Ÿ‡จ๐Ÿ‡ฟ
cs-CZ-AntoninNeural Male cs-CZ Czechia ๐Ÿ‡จ๐Ÿ‡ฟ
cy-GB-NiaNeural Female cy-GB United Kingdom ๐Ÿ‡ฌ๐Ÿ‡ง
cy-GB-AledNeural Male cy-GB United Kingdom ๐Ÿ‡ฌ๐Ÿ‡ง
da-DK-ChristelNeural Female da-DK Denmark ๐Ÿ‡ฉ๐Ÿ‡ฐ
da-DK-JeppeNeural Male da-DK Denmark ๐Ÿ‡ฉ๐Ÿ‡ฐ
de-AT-IngridNeural Female de-AT Austria ๐Ÿ‡ฆ๐Ÿ‡น
de-AT-JonasNeural Male de-AT Austria ๐Ÿ‡ฆ๐Ÿ‡น
de-CH-LeniNeural Female de-CH Switzerland ๐Ÿ‡จ๐Ÿ‡ญ
de-CH-JanNeural Male de-CH Switzerland ๐Ÿ‡จ๐Ÿ‡ญ
de-DE-AmalaNeural Female de-DE Germany ๐Ÿ‡ฉ๐Ÿ‡ช
de-DE-KatjaNeural Female de-DE Germany ๐Ÿ‡ฉ๐Ÿ‡ช
de-DE-SeraphinaMultilingualNeural Female de-DE Germany ๐Ÿ‡ฉ๐Ÿ‡ช
de-DE-ConradNeural Male de-DE Germany ๐Ÿ‡ฉ๐Ÿ‡ช
de-DE-FlorianMultilingualNeural Male de-DE Germany ๐Ÿ‡ฉ๐Ÿ‡ช
de-DE-KillianNeural Male de-DE Germany ๐Ÿ‡ฉ๐Ÿ‡ช
el-GR-AthinaNeural Female el-GR Greece ๐Ÿ‡ฌ๐Ÿ‡ท
el-GR-NestorasNeural Male el-GR Greece ๐Ÿ‡ฌ๐Ÿ‡ท
en-AU-NatashaNeural Female en-AU Australia ๐Ÿ‡ฆ๐Ÿ‡บ
en-AU-WilliamMultilingualNeural Male en-AU Australia ๐Ÿ‡ฆ๐Ÿ‡บ
en-CA-ClaraNeural Female en-CA Canada ๐Ÿ‡จ๐Ÿ‡ฆ
en-CA-LiamNeural Male en-CA Canada ๐Ÿ‡จ๐Ÿ‡ฆ
en-GB-LibbyNeural Female en-GB United Kingdom ๐Ÿ‡ฌ๐Ÿ‡ง
en-GB-MaisieNeural Female en-GB United Kingdom ๐Ÿ‡ฌ๐Ÿ‡ง
en-GB-SoniaNeural Female en-GB United Kingdom ๐Ÿ‡ฌ๐Ÿ‡ง
en-GB-RyanNeural Male en-GB United Kingdom ๐Ÿ‡ฌ๐Ÿ‡ง
en-GB-ThomasNeural Male en-GB United Kingdom ๐Ÿ‡ฌ๐Ÿ‡ง
en-HK-YanNeural Female en-HK Hong Kong ๐Ÿ‡ญ๐Ÿ‡ฐ
en-HK-SamNeural Male en-HK Hong Kong ๐Ÿ‡ญ๐Ÿ‡ฐ
en-IE-EmilyNeural Female en-IE Ireland ๐Ÿ‡ฎ๐Ÿ‡ช
en-IE-ConnorNeural Male en-IE Ireland ๐Ÿ‡ฎ๐Ÿ‡ช
en-IN-NeerjaExpressiveNeural Female en-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
en-IN-NeerjaNeural Female en-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
en-IN-PrabhatNeural Male en-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
en-KE-AsiliaNeural Female en-KE Kenya ๐Ÿ‡ฐ๐Ÿ‡ช
en-KE-ChilembaNeural Male en-KE Kenya ๐Ÿ‡ฐ๐Ÿ‡ช
en-NG-EzinneNeural Female en-NG Nigeria ๐Ÿ‡ณ๐Ÿ‡ฌ
en-NG-AbeoNeural Male en-NG Nigeria ๐Ÿ‡ณ๐Ÿ‡ฌ
en-NZ-MollyNeural Female en-NZ New Zealand ๐Ÿ‡ณ๐Ÿ‡ฟ
en-NZ-MitchellNeural Male en-NZ New Zealand ๐Ÿ‡ณ๐Ÿ‡ฟ
en-PH-RosaNeural Female en-PH Philippines ๐Ÿ‡ต๐Ÿ‡ญ
en-PH-JamesNeural Male en-PH Philippines ๐Ÿ‡ต๐Ÿ‡ญ
en-SG-LunaNeural Female en-SG Singapore ๐Ÿ‡ธ๐Ÿ‡ฌ
en-SG-WayneNeural Male en-SG Singapore ๐Ÿ‡ธ๐Ÿ‡ฌ
en-TZ-ImaniNeural Female en-TZ Tanzania ๐Ÿ‡น๐Ÿ‡ฟ
en-TZ-ElimuNeural Male en-TZ Tanzania ๐Ÿ‡น๐Ÿ‡ฟ
en-US-AnaNeural Female en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
en-US-AriaNeural Female en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
en-US-AvaMultilingualNeural Female en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
en-US-AvaNeural Female en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
en-US-EmmaMultilingualNeural Female en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
en-US-EmmaNeural Female en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
en-US-JennyNeural Female en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
en-US-MichelleNeural Female en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
en-US-AndrewMultilingualNeural Male en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
en-US-AndrewNeural Male en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
en-US-BrianMultilingualNeural Male en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
en-US-BrianNeural Male en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
en-US-ChristopherNeural Male en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
en-US-EricNeural Male en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
en-US-GuyNeural Male en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
en-US-RogerNeural Male en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
en-US-SteffanNeural Male en-US United States ๐Ÿ‡บ๐Ÿ‡ธ
en-ZA-LeahNeural Female en-ZA South Africa ๐Ÿ‡ฟ๐Ÿ‡ฆ
en-ZA-LukeNeural Male en-ZA South Africa ๐Ÿ‡ฟ๐Ÿ‡ฆ
es-AR-ElenaNeural Female es-AR Argentina ๐Ÿ‡ฆ๐Ÿ‡ท
es-AR-TomasNeural Male es-AR Argentina ๐Ÿ‡ฆ๐Ÿ‡ท
es-BO-SofiaNeural Female es-BO Bolivia ๐Ÿ‡ง๐Ÿ‡ด
es-BO-MarceloNeural Male es-BO Bolivia ๐Ÿ‡ง๐Ÿ‡ด
es-CL-CatalinaNeural Female es-CL Chile ๐Ÿ‡จ๐Ÿ‡ฑ
es-CL-LorenzoNeural Male es-CL Chile ๐Ÿ‡จ๐Ÿ‡ฑ
es-CO-SalomeNeural Female es-CO Colombia ๐Ÿ‡จ๐Ÿ‡ด
es-CO-GonzaloNeural Male es-CO Colombia ๐Ÿ‡จ๐Ÿ‡ด
es-CR-MariaNeural Female es-CR Costa Rica ๐Ÿ‡จ๐Ÿ‡ท
es-CR-JuanNeural Male es-CR Costa Rica ๐Ÿ‡จ๐Ÿ‡ท
es-CU-BelkysNeural Female es-CU Cuba ๐Ÿ‡จ๐Ÿ‡บ
es-CU-ManuelNeural Male es-CU Cuba ๐Ÿ‡จ๐Ÿ‡บ
es-DO-RamonaNeural Female es-DO Dominican Rep. ๐Ÿ‡ฉ๐Ÿ‡ด
es-DO-EmilioNeural Male es-DO Dominican Rep. ๐Ÿ‡ฉ๐Ÿ‡ด
es-EC-AndreaNeural Female es-EC Ecuador ๐Ÿ‡ช๐Ÿ‡จ
es-EC-LuisNeural Male es-EC Ecuador ๐Ÿ‡ช๐Ÿ‡จ
es-ES-ElviraNeural Female es-ES Spain ๐Ÿ‡ช๐Ÿ‡ธ
es-ES-XimenaNeural Female es-ES Spain ๐Ÿ‡ช๐Ÿ‡ธ
es-ES-AlvaroNeural Male es-ES Spain ๐Ÿ‡ช๐Ÿ‡ธ
es-GQ-TeresaNeural Female es-GQ Equatorial Guinea ๐Ÿ‡ฌ๐Ÿ‡ถ
es-GQ-JavierNeural Male es-GQ Equatorial Guinea ๐Ÿ‡ฌ๐Ÿ‡ถ
es-GT-MartaNeural Female es-GT Guatemala ๐Ÿ‡ฌ๐Ÿ‡น
es-GT-AndresNeural Male es-GT Guatemala ๐Ÿ‡ฌ๐Ÿ‡น
es-HN-KarlaNeural Female es-HN Honduras ๐Ÿ‡ญ๐Ÿ‡ณ
es-HN-CarlosNeural Male es-HN Honduras ๐Ÿ‡ญ๐Ÿ‡ณ
es-MX-DaliaNeural Female es-MX Mexico ๐Ÿ‡ฒ๐Ÿ‡ฝ
es-MX-JorgeNeural Male es-MX Mexico ๐Ÿ‡ฒ๐Ÿ‡ฝ
es-NI-YolandaNeural Female es-NI Nicaragua ๐Ÿ‡ณ๐Ÿ‡ฎ
es-NI-FedericoNeural Male es-NI Nicaragua ๐Ÿ‡ณ๐Ÿ‡ฎ
es-PA-MargaritaNeural Female es-PA Panama ๐Ÿ‡ต๐Ÿ‡ฆ
es-PA-RobertoNeural Male es-PA Panama ๐Ÿ‡ต๐Ÿ‡ฆ
es-PE-CamilaNeural Female es-PE Peru ๐Ÿ‡ต๐Ÿ‡ช
es-PE-AlexNeural Male es-PE Peru ๐Ÿ‡ต๐Ÿ‡ช
es-PR-KarinaNeural Female es-PR Puerto Rico ๐Ÿ‡ต๐Ÿ‡ท
es-PR-VictorNeural Male es-PR Puerto Rico ๐Ÿ‡ต๐Ÿ‡ท
es-PY-TaniaNeural Female es-PY Paraguay ๐Ÿ‡ต๐Ÿ‡พ
es-PY-MarioNeural Male es-PY Paraguay ๐Ÿ‡ต๐Ÿ‡พ
es-SV-LorenaNeural Female es-SV El Salvador ๐Ÿ‡ธ๐Ÿ‡ป
es-SV-RodrigoNeural Male es-SV El Salvador ๐Ÿ‡ธ๐Ÿ‡ป
es-US-PalomaNeural Female es-US United States ๐Ÿ‡บ๐Ÿ‡ธ
es-US-AlonsoNeural Male es-US United States ๐Ÿ‡บ๐Ÿ‡ธ
es-UY-ValentinaNeural Female es-UY Uruguay ๐Ÿ‡บ๐Ÿ‡พ
es-UY-MateoNeural Male es-UY Uruguay ๐Ÿ‡บ๐Ÿ‡พ
es-VE-PaolaNeural Female es-VE Venezuela ๐Ÿ‡ป๐Ÿ‡ช
es-VE-SebastianNeural Male es-VE Venezuela ๐Ÿ‡ป๐Ÿ‡ช
et-EE-AnuNeural Female et-EE Estonia ๐Ÿ‡ช๐Ÿ‡ช
et-EE-KertNeural Male et-EE Estonia ๐Ÿ‡ช๐Ÿ‡ช
fa-IR-DilaraNeural Female fa-IR Iran ๐Ÿ‡ฎ๐Ÿ‡ท
fa-IR-FaridNeural Male fa-IR Iran ๐Ÿ‡ฎ๐Ÿ‡ท
fi-FI-NooraNeural Female fi-FI Finland ๐Ÿ‡ซ๐Ÿ‡ฎ
fi-FI-HarriNeural Male fi-FI Finland ๐Ÿ‡ซ๐Ÿ‡ฎ
fil-PH-BlessicaNeural Female fil-PH Philippines ๐Ÿ‡ต๐Ÿ‡ญ
fil-PH-AngeloNeural Male fil-PH Philippines ๐Ÿ‡ต๐Ÿ‡ญ
fr-BE-CharlineNeural Female fr-BE Belgium ๐Ÿ‡ง๐Ÿ‡ช
fr-BE-GerardNeural Male fr-BE Belgium ๐Ÿ‡ง๐Ÿ‡ช
fr-CA-SylvieNeural Female fr-CA Canada ๐Ÿ‡จ๐Ÿ‡ฆ
fr-CA-AntoineNeural Male fr-CA Canada ๐Ÿ‡จ๐Ÿ‡ฆ
fr-CA-JeanNeural Male fr-CA Canada ๐Ÿ‡จ๐Ÿ‡ฆ
fr-CA-ThierryNeural Male fr-CA Canada ๐Ÿ‡จ๐Ÿ‡ฆ
fr-CH-ArianeNeural Female fr-CH Switzerland ๐Ÿ‡จ๐Ÿ‡ญ
fr-CH-FabriceNeural Male fr-CH Switzerland ๐Ÿ‡จ๐Ÿ‡ญ
fr-FR-DeniseNeural Female fr-FR France ๐Ÿ‡ซ๐Ÿ‡ท
fr-FR-EloiseNeural Female fr-FR France ๐Ÿ‡ซ๐Ÿ‡ท
fr-FR-VivienneMultilingualNeural Female fr-FR France ๐Ÿ‡ซ๐Ÿ‡ท
fr-FR-HenriNeural Male fr-FR France ๐Ÿ‡ซ๐Ÿ‡ท
fr-FR-RemyMultilingualNeural Male fr-FR France ๐Ÿ‡ซ๐Ÿ‡ท
ga-IE-OrlaNeural Female ga-IE Ireland ๐Ÿ‡ฎ๐Ÿ‡ช
ga-IE-ColmNeural Male ga-IE Ireland ๐Ÿ‡ฎ๐Ÿ‡ช
gl-ES-SabelaNeural Female gl-ES Spain ๐Ÿ‡ช๐Ÿ‡ธ
gl-ES-RoiNeural Male gl-ES Spain ๐Ÿ‡ช๐Ÿ‡ธ
gu-IN-DhwaniNeural Female gu-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
gu-IN-NiranjanNeural Male gu-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
he-IL-HilaNeural Female he-IL Israel ๐Ÿ‡ฎ๐Ÿ‡ฑ
he-IL-AvriNeural Male he-IL Israel ๐Ÿ‡ฎ๐Ÿ‡ฑ
hi-IN-SwaraNeural Female hi-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
hi-IN-MadhurNeural Male hi-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
hr-HR-GabrijelaNeural Female hr-HR Croatia ๐Ÿ‡ญ๐Ÿ‡ท
hr-HR-SreckoNeural Male hr-HR Croatia ๐Ÿ‡ญ๐Ÿ‡ท
hu-HU-NoemiNeural Female hu-HU Hungary ๐Ÿ‡ญ๐Ÿ‡บ
hu-HU-TamasNeural Male hu-HU Hungary ๐Ÿ‡ญ๐Ÿ‡บ
id-ID-GadisNeural Female id-ID Indonesia ๐Ÿ‡ฎ๐Ÿ‡ฉ
id-ID-ArdiNeural Male id-ID Indonesia ๐Ÿ‡ฎ๐Ÿ‡ฉ
is-IS-GudrunNeural Female is-IS Iceland ๐Ÿ‡ฎ๐Ÿ‡ธ
is-IS-GunnarNeural Male is-IS Iceland ๐Ÿ‡ฎ๐Ÿ‡ธ
it-IT-ElsaNeural Female it-IT Italy ๐Ÿ‡ฎ๐Ÿ‡น
it-IT-IsabellaNeural Female it-IT Italy ๐Ÿ‡ฎ๐Ÿ‡น
it-IT-DiegoNeural Male it-IT Italy ๐Ÿ‡ฎ๐Ÿ‡น
it-IT-GiuseppeMultilingualNeural Male it-IT Italy ๐Ÿ‡ฎ๐Ÿ‡น
iu-Cans-CA-SiqiniqNeural Female iu-Cans-CA Inuktitut (Syllabics, Canada)
iu-Cans-CA-TaqqiqNeural Male iu-Cans-CA Inuktitut (Syllabics, Canada)
iu-Latn-CA-SiqiniqNeural Female iu-Latn-CA Inuktitut (Latin, Canada)
iu-Latn-CA-TaqqiqNeural Male iu-Latn-CA Inuktitut (Latin, Canada)
ja-JP-NanamiNeural Female ja-JP Japan ๐Ÿ‡ฏ๐Ÿ‡ต
ja-JP-KeitaNeural Male ja-JP Japan ๐Ÿ‡ฏ๐Ÿ‡ต
jv-ID-SitiNeural Female jv-ID Indonesia ๐Ÿ‡ฎ๐Ÿ‡ฉ
jv-ID-DimasNeural Male jv-ID Indonesia ๐Ÿ‡ฎ๐Ÿ‡ฉ
ka-GE-EkaNeural Female ka-GE Georgia ๐Ÿ‡ฌ๐Ÿ‡ช
ka-GE-GiorgiNeural Male ka-GE Georgia ๐Ÿ‡ฌ๐Ÿ‡ช
kk-KZ-AigulNeural Female kk-KZ Kazakhstan ๐Ÿ‡ฐ๐Ÿ‡ฟ
kk-KZ-DauletNeural Male kk-KZ Kazakhstan ๐Ÿ‡ฐ๐Ÿ‡ฟ
km-KH-SreymomNeural Female km-KH Cambodia ๐Ÿ‡ฐ๐Ÿ‡ญ
km-KH-PisethNeural Male km-KH Cambodia ๐Ÿ‡ฐ๐Ÿ‡ญ
kn-IN-SapnaNeural Female kn-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
kn-IN-GaganNeural Male kn-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
ko-KR-SunHiNeural Female ko-KR South Korea ๐Ÿ‡ฐ๐Ÿ‡ท
ko-KR-HyunsuMultilingualNeural Male ko-KR South Korea ๐Ÿ‡ฐ๐Ÿ‡ท
ko-KR-InJoonNeural Male ko-KR South Korea ๐Ÿ‡ฐ๐Ÿ‡ท
lo-LA-KeomanyNeural Female lo-LA Laos ๐Ÿ‡ฑ๐Ÿ‡ฆ
lo-LA-ChanthavongNeural Male lo-LA Laos ๐Ÿ‡ฑ๐Ÿ‡ฆ
lt-LT-OnaNeural Female lt-LT Lithuania ๐Ÿ‡ฑ๐Ÿ‡น
lt-LT-LeonasNeural Male lt-LT Lithuania ๐Ÿ‡ฑ๐Ÿ‡น
lv-LV-EveritaNeural Female lv-LV Latvia ๐Ÿ‡ฑ๐Ÿ‡ป
lv-LV-NilsNeural Male lv-LV Latvia ๐Ÿ‡ฑ๐Ÿ‡ป
mk-MK-MarijaNeural Female mk-MK North Macedonia ๐Ÿ‡ฒ๐Ÿ‡ฐ
mk-MK-AleksandarNeural Male mk-MK North Macedonia ๐Ÿ‡ฒ๐Ÿ‡ฐ
ml-IN-SobhanaNeural Female ml-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
ml-IN-MidhunNeural Male ml-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
mn-MN-YesuiNeural Female mn-MN Mongolia ๐Ÿ‡ฒ๐Ÿ‡ณ
mn-MN-BataaNeural Male mn-MN Mongolia ๐Ÿ‡ฒ๐Ÿ‡ณ
mr-IN-AarohiNeural Female mr-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
mr-IN-ManoharNeural Male mr-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
ms-MY-YasminNeural Female ms-MY Malaysia ๐Ÿ‡ฒ๐Ÿ‡พ
ms-MY-OsmanNeural Male ms-MY Malaysia ๐Ÿ‡ฒ๐Ÿ‡พ
mt-MT-GraceNeural Female mt-MT Malta ๐Ÿ‡ฒ๐Ÿ‡น
mt-MT-JosephNeural Male mt-MT Malta ๐Ÿ‡ฒ๐Ÿ‡น
my-MM-NilarNeural Female my-MM Myanmar ๐Ÿ‡ฒ๐Ÿ‡ฒ
my-MM-ThihaNeural Male my-MM Myanmar ๐Ÿ‡ฒ๐Ÿ‡ฒ
nb-NO-PernilleNeural Female nb-NO Norway ๐Ÿ‡ณ๐Ÿ‡ด
nb-NO-FinnNeural Male nb-NO Norway ๐Ÿ‡ณ๐Ÿ‡ด
ne-NP-HemkalaNeural Female ne-NP Nepal ๐Ÿ‡ณ๐Ÿ‡ต
ne-NP-SagarNeural Male ne-NP Nepal ๐Ÿ‡ณ๐Ÿ‡ต
nl-BE-DenaNeural Female nl-BE Belgium ๐Ÿ‡ง๐Ÿ‡ช
nl-BE-ArnaudNeural Male nl-BE Belgium ๐Ÿ‡ง๐Ÿ‡ช
nl-NL-ColetteNeural Female nl-NL Netherlands ๐Ÿ‡ณ๐Ÿ‡ฑ
nl-NL-FennaNeural Female nl-NL Netherlands ๐Ÿ‡ณ๐Ÿ‡ฑ
nl-NL-MaartenNeural Male nl-NL Netherlands ๐Ÿ‡ณ๐Ÿ‡ฑ
pl-PL-ZofiaNeural Female pl-PL Poland ๐Ÿ‡ต๐Ÿ‡ฑ
pl-PL-MarekNeural Male pl-PL Poland ๐Ÿ‡ต๐Ÿ‡ฑ
ps-AF-LatifaNeural Female ps-AF Afghanistan ๐Ÿ‡ฆ๐Ÿ‡ซ
ps-AF-GulNawazNeural Male ps-AF Afghanistan ๐Ÿ‡ฆ๐Ÿ‡ซ
pt-BR-FranciscaNeural Female pt-BR Brazil ๐Ÿ‡ง๐Ÿ‡ท
pt-BR-ThalitaMultilingualNeural Female pt-BR Brazil ๐Ÿ‡ง๐Ÿ‡ท
pt-BR-AntonioNeural Male pt-BR Brazil ๐Ÿ‡ง๐Ÿ‡ท
pt-PT-RaquelNeural Female pt-PT Portugal ๐Ÿ‡ต๐Ÿ‡น
pt-PT-DuarteNeural Male pt-PT Portugal ๐Ÿ‡ต๐Ÿ‡น
ro-RO-AlinaNeural Female ro-RO Romania ๐Ÿ‡ท๐Ÿ‡ด
ro-RO-EmilNeural Male ro-RO Romania ๐Ÿ‡ท๐Ÿ‡ด
ru-RU-SvetlanaNeural Female ru-RU Russia ๐Ÿ‡ท๐Ÿ‡บ
ru-RU-DmitryNeural Male ru-RU Russia ๐Ÿ‡ท๐Ÿ‡บ
si-LK-ThiliniNeural Female si-LK Sri Lanka ๐Ÿ‡ฑ๐Ÿ‡ฐ
si-LK-SameeraNeural Male si-LK Sri Lanka ๐Ÿ‡ฑ๐Ÿ‡ฐ
sk-SK-ViktoriaNeural Female sk-SK Slovakia ๐Ÿ‡ธ๐Ÿ‡ฐ
sk-SK-LukasNeural Male sk-SK Slovakia ๐Ÿ‡ธ๐Ÿ‡ฐ
sl-SI-PetraNeural Female sl-SI Slovenia ๐Ÿ‡ธ๐Ÿ‡ฎ
sl-SI-RokNeural Male sl-SI Slovenia ๐Ÿ‡ธ๐Ÿ‡ฎ
so-SO-UbaxNeural Female so-SO Somalia ๐Ÿ‡ธ๐Ÿ‡ด
so-SO-MuuseNeural Male so-SO Somalia ๐Ÿ‡ธ๐Ÿ‡ด
sq-AL-AnilaNeural Female sq-AL Albania ๐Ÿ‡ฆ๐Ÿ‡ฑ
sq-AL-IlirNeural Male sq-AL Albania ๐Ÿ‡ฆ๐Ÿ‡ฑ
sr-RS-SophieNeural Female sr-RS Serbia ๐Ÿ‡ท๐Ÿ‡ธ
sr-RS-NicholasNeural Male sr-RS Serbia ๐Ÿ‡ท๐Ÿ‡ธ
su-ID-TutiNeural Female su-ID Indonesia ๐Ÿ‡ฎ๐Ÿ‡ฉ
su-ID-JajangNeural Male su-ID Indonesia ๐Ÿ‡ฎ๐Ÿ‡ฉ
sv-SE-SofieNeural Female sv-SE Sweden ๐Ÿ‡ธ๐Ÿ‡ช
sv-SE-MattiasNeural Male sv-SE Sweden ๐Ÿ‡ธ๐Ÿ‡ช
sw-KE-ZuriNeural Female sw-KE Kenya ๐Ÿ‡ฐ๐Ÿ‡ช
sw-KE-RafikiNeural Male sw-KE Kenya ๐Ÿ‡ฐ๐Ÿ‡ช
sw-TZ-RehemaNeural Female sw-TZ Tanzania ๐Ÿ‡น๐Ÿ‡ฟ
sw-TZ-DaudiNeural Male sw-TZ Tanzania ๐Ÿ‡น๐Ÿ‡ฟ
ta-IN-PallaviNeural Female ta-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
ta-IN-ValluvarNeural Male ta-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
ta-LK-SaranyaNeural Female ta-LK Sri Lanka ๐Ÿ‡ฑ๐Ÿ‡ฐ
ta-LK-KumarNeural Male ta-LK Sri Lanka ๐Ÿ‡ฑ๐Ÿ‡ฐ
ta-MY-KaniNeural Female ta-MY Malaysia ๐Ÿ‡ฒ๐Ÿ‡พ
ta-MY-SuryaNeural Male ta-MY Malaysia ๐Ÿ‡ฒ๐Ÿ‡พ
ta-SG-VenbaNeural Female ta-SG Singapore ๐Ÿ‡ธ๐Ÿ‡ฌ
ta-SG-AnbuNeural Male ta-SG Singapore ๐Ÿ‡ธ๐Ÿ‡ฌ
te-IN-ShrutiNeural Female te-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
te-IN-MohanNeural Male te-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
th-TH-PremwadeeNeural Female th-TH Thailand ๐Ÿ‡น๐Ÿ‡ญ
th-TH-NiwatNeural Male th-TH Thailand ๐Ÿ‡น๐Ÿ‡ญ
tr-TR-EmelNeural Female tr-TR Turkey ๐Ÿ‡น๐Ÿ‡ท
tr-TR-AhmetNeural Male tr-TR Turkey ๐Ÿ‡น๐Ÿ‡ท
uk-UA-PolinaNeural Female uk-UA Ukraine ๐Ÿ‡บ๐Ÿ‡ฆ
uk-UA-OstapNeural Male uk-UA Ukraine ๐Ÿ‡บ๐Ÿ‡ฆ
ur-IN-GulNeural Female ur-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
ur-IN-SalmanNeural Male ur-IN India ๐Ÿ‡ฎ๐Ÿ‡ณ
ur-PK-UzmaNeural Female ur-PK Pakistan ๐Ÿ‡ต๐Ÿ‡ฐ
ur-PK-AsadNeural Male ur-PK Pakistan ๐Ÿ‡ต๐Ÿ‡ฐ
uz-UZ-MadinaNeural Female uz-UZ Uzbekistan ๐Ÿ‡บ๐Ÿ‡ฟ
uz-UZ-SardorNeural Male uz-UZ Uzbekistan ๐Ÿ‡บ๐Ÿ‡ฟ
vi-VN-HoaiMyNeural Female vi-VN Vietnam ๐Ÿ‡ป๐Ÿ‡ณ
vi-VN-NamMinhNeural Male vi-VN Vietnam ๐Ÿ‡ป๐Ÿ‡ณ
zh-CN-XiaoxiaoNeural Female zh-CN China ๐Ÿ‡จ๐Ÿ‡ณ
zh-CN-XiaoyiNeural Female zh-CN China ๐Ÿ‡จ๐Ÿ‡ณ
zh-CN-YunjianNeural Male zh-CN China ๐Ÿ‡จ๐Ÿ‡ณ
zh-CN-YunxiNeural Male zh-CN China ๐Ÿ‡จ๐Ÿ‡ณ
zh-CN-YunxiaNeural Male zh-CN China ๐Ÿ‡จ๐Ÿ‡ณ
zh-CN-YunyangNeural Male zh-CN China ๐Ÿ‡จ๐Ÿ‡ณ
zh-CN-liaoning-XiaobeiNeural Female zh-CN-liaoning China ๐Ÿ‡จ๐Ÿ‡ณ
zh-CN-shaanxi-XiaoniNeural Female zh-CN-shaanxi China ๐Ÿ‡จ๐Ÿ‡ณ
zh-HK-HiuGaaiNeural Female zh-HK Hong Kong ๐Ÿ‡ญ๐Ÿ‡ฐ
zh-HK-HiuMaanNeural Female zh-HK Hong Kong ๐Ÿ‡ญ๐Ÿ‡ฐ
zh-HK-WanLungNeural Male zh-HK Hong Kong ๐Ÿ‡ญ๐Ÿ‡ฐ
zh-TW-HsiaoChenNeural Female zh-TW Taiwan ๐Ÿ‡น๐Ÿ‡ผ
zh-TW-HsiaoYuNeural Female zh-TW Taiwan ๐Ÿ‡น๐Ÿ‡ผ
zh-TW-YunJheNeural Male zh-TW Taiwan ๐Ÿ‡น๐Ÿ‡ผ
zu-ZA-ThandoNeural Female zu-ZA South Africa ๐Ÿ‡ฟ๐Ÿ‡ฆ
zu-ZA-ThembaNeural Male zu-ZA South Africa ๐Ÿ‡ฟ๐Ÿ‡ฆ

Why use this?

  • Video-as-Code: Keep your internal documentation and helpdesk videos in version control.
  • Perfectly Timed: Automatically calculates the exact duration of the generated Text-to-Speech (TTS) audio and perfectly syncs, loops, or pads your visual media to match.
  • Iterative Screen Recording: Automatically exports individual .mp4 files for every slide. This allows you to listen to the generated audio for a specific step and record a screen capture that perfectly matches that exact timing.
  • AI-Friendly: The input format is a strict JSON array, making it incredibly easy for LLMs and AI agents to generate instructional videos automatically.
  • Dual TTS Engines: Use edge-tts for quick, zero-setup cloud generation, or default to kokoro for complete offline privacy and commercial-friendly open-source narration.

Prerequisites

  1. Python 3.8+
  2. FFmpeg: Must be installed and accessible in your system's PATH.
    • Ubuntu/Debian: sudo apt install ffmpeg
    • macOS: brew install ffmpeg
    • Windows: winget install ffmpeg

Installation

Clone the repository and install the required Python packages:

git clone https://github.com/yourusername/script-to-demo-video.git
cd script-to-demo-video
python -m venv venv
source venv/bin/activate  # On Windows use: venv\Scripts\activate
pip install edge-tts pydub kokoro soundfile

(Note: The first time you run the tool using the Kokoro engine, it will automatically download the 82M parameter model weights (~300MB) to your machine.)

Quick Start

Create a JSON file (e.g., demo.json) containing your script and media paths. Then, run the following command:

# Default: Uses Kokoro (local/private)
python script_to_demo_video.py demo.json

# Alternative: Uses edge-tts (cloud)
python script_to_demo_video.py demo.json --engine edge

We recommend Kooha for screen recording or OBS Studio for professionals.

flatpak install flathub io.github.seadve.Kooha
flatpak run io.github.seadve.Kooha

The JSON Payload

The script expects a JSON array of objects. Each object represents one "slide" or "section" of your video.

[
    {
        "text": "Welcome to the IT Helpdesk tutorial on using BrainFrame AI. [PAUSE 1.5] Let's begin.",
        "media": "assets/intro_slide.png"
    },
    {
        "text": "[PAUSE 2.0] First, open the BrainFrame Webclient by typing the server's IP address into your browser's address bar. Press Enter. [PAUSE]",
        "media": "assets/login_step.mp4",
        "mix_audio": true,
        "media_volume": 0.25
    }
]
  • text: The exact words the TTS engine will speak. (Note: You can insert inline tags like [PAUSE 2.0] directly into the text to force the TTS engine to pause mid-sentence or add trailing silence at the end).
  • media: The path to your visual asset (relative to the JSON file). Supports images (.png, .jpg) and video clips (.mp4, .mov, .avi, .mkv).
  • mix_audio: (Optional) Boolean (true/false). Set to true to keep the original audio from your video media file and mix it underneath the TTS narration.
  • media_volume: (Optional) Float. When mix_audio is enabled, this sets the volume level of the background media (e.g., 0.25 for 25% volume).
  • (Legacy support: You can also use the key image instead of "media").

Note on duration and chapter keys: You do not need to provide timing & chapter number! The tool will calculate the required duration and chapter number based on the generated audio and automatically update your JSON file to append a duration and chapter keys for your reference.

The "Perfect Timing" Workflow

This tool is designed to make recording complex screencasts easy by breaking them down into manageable, pre-timed chunks.

  1. Capture Screenshots: Take screenshots of every screen or slide in your demo. These act as visual placeholders and help guide your script.
  2. Draft the Script: Enter your script and the corresponding screenshot filenames into your JSON file in presentation order.
  3. Compile the Draft: Run the tool to generate the video and audio.
  4. Review the Output: Locate the newly created [output_name]_slides folder, which contains an individual .mp4 for each section.
  5. Record the Final Screen: Play the generated slides (e.g., slide_02.mp4) to listen to the TTS audio. Use a screen recorder to capture your actual screen, matching your actions to the audio's pacing.
  6. Update and Re-compile: Update the JSON with your new video recording and run the compilation script once more to finalize the video.

Command Line Arguments

You can customize the voice, volume, and output behavior using CLI flags.

Argument Description Default
script_file Path to the input JSON file. Required
output_video Path to save the final stitched video. (Defaults to script filename with .mp4) Optional
--engine Choose the TTS engine: edge (cloud/fast) or kokoro (local/private). edge
--voice Exact voice name to use (e.g., en-US-AriaNeural for edge, am_fenrir for kokoro). None
--gender Target gender if searching for a voice automatically (Edge only). male
--lang Target locale if searching for a voice automatically (e.g., en-GB, es-MX) (Edge only). en-US
--volume Volume adjustment for the TTS output. Use percentages (Edge only). +0%
--captions Enables automatic subtitle generation and overlays them on the video. False
--font-size Sets the font size for the video captions (requires --captions). 24
--font-color Sets the text color for the captions (e.g., white, yellow, #FFFFFF). white
--list-voices Prints a formatted list of all available TTS voices for the Edge engine and exits. None
--verbose Shows raw standard error output from FFmpeg for debugging. False

Selecting a Voice

Using Edge-TTS (Cloud)

To see all available voices, run: python script_to_demo_video.py --list-voices

Once you find a voice you like, use the ShortName with the --voice flag: python script_to_demo_video.py demo.json --voice en-GB-RyanNeural

Using Kokoro (Local)

Kokoro uses specific pre-trained voice files. By default, the script falls back to am_fenrir (a high-quality American female voice). Some other popular Kokoro voices include:

  • Female: af_heart, af_alloy, af_bella
  • Male: am_fenrir, am_michael, am_puck

python script_to_demo_video.py demo.json --engine kokoro --voice am_fenrir

For AI Agents

If you are an AI assistant generating a payload for this tool:

  1. Always format the output as a strict JSON array.
  2. Ensure the text field uses natural punctuation, as the TTS engine relies on commas and periods for proper pacing and breath pauses.
  3. Use the media key for all file references.
  4. Do not hallucinate the duration key; allow the Python execution environment to append it automatically.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages