chrisjp / tts Goto Github PK
View Code? Open in Web Editor NEWA simple tool to demo text-to-speech using various services' voices. HTML5 and Vanilla JS.
Home Page: https://lazypy.ro/tts
License: MIT License
A simple tool to demo text-to-speech using various services' voices. HTML5 and Vanilla JS.
Home Page: https://lazypy.ro/tts
License: MIT License
Hi.
My name is Adam, but my username for YouTube is BrainiacAdam. I just want to let you know that the TikTok voices are currently not working and neither is the Cepstral voices. The TikTok voices say "Couldn't load voices. Try again" and the Cepstral says "ticket limit reached". Could you try to resolve this as soon as you can please. Thanks.
Best regards
Adam.
Tiktok and acapella voices don't work
Are there any endpoints for the website that can be used to fetch the generated audio file using Node? If not, are there any ways to remotely grab the generated audio?
Microsoft Edge has a feature called Immersive Reader that can read web pages to the user. Before you ask, yes it does have the same voices as the Bing Translator has, except the Edge API has even more voices (such as en-US-AndrewNeural and en-US-AvaNeural, although it is important to note that the API might not have all the voices, such as fi-FI-SelmaNeural), and the audio quality is better compared to the Bing Translator API.
This has already been reversed in https://github.com/rany2/edge-tts so if you plan on implementing it to the website, this can give you a head start.
The IBM Watson demo website has changed how it functions. The current methods are not erroring however they are returning empty mp3 files.
I've noticed that several requests are being made now.
Firstly, on page load a POST is sent to https://www.ibm.com/demos/live/tts-demo/api/tts/session
to initialize a session. Every time a user pauses typing in the textarea a POST is made to the same URL to check the session ID exists. If you leave the page open for more than a few minutes it won't initialize a new one, you have to manually refresh.
When clicking play, a POST request is then sent to https://www.ibm.com/demos/live/tts-demo/api/tts/store
with JSON data containing the session ID and the text to be synthesized, which is stored in the session:
{
"ssmlText":"<prosody pitch=\"0%\" rate=\"-0%\">Whatever text you want spoken here</prosody>",
"sessionID":"ca47b5a9-27ad-4d2e-9b9f-38fa548b4140"
}
Finally, we GET a URL like the following containing the voice id and session ID. e.g:
https://www.ibm.com/demos/live/tts-demo/api/tts/newSynthesizer?voice=en-GB_KateV3Voice&id=c4e4d21f-efd4-40a8-b696-e486ea4c6a5b
It appears the session is valid for a very short time, perhaps only a couple of minutes, and consequently the audio is quickly discarded too.
This hopefully won't be too much of an issue to fix as we can just make all the requests successively via the proxy.php script.
I'm trying to add the voices from lazypy.ro for use for the Wrapper: Offline software (It's also on GitHub) (I'm using them for the Acapela (They are in the software already but they are not working at the moment as they generate a blank audio file), IBM Watson and Bing Translator voices).
This is what I have so far, this is for tts.js
case "Acapela": {
const body = new URLSearchParams({
service: voice.source,
voice: voice.arg,
text: text
}).toString();
const req = https.request(
{
hostname: "lazypy.ro",
path: "/tts/request_tts.php",
method: "POST",
Requires voices.json
` "ryan22k": {
"country": "US",
"language": "en",
"gender": "M",
"source": "Acapela",
"arg": "ryan22k",
"desc": "Ryan"
},
I did tested 2 different requests but when generating a voice from the software, It will result in a socket hang up error.
tts.txt
Here is wrapper/models/tts.js (changed it to txt because I can't upload js files on a message) from the software, I'm trying to use the same code as the other speech providers used in the program.
voices.txt
and also wrapper/data/voices.json (also changed to txt for the same reason)
And also, TikTok has added 2 new voices based on popular users of their app. "ashmagic" and "olantekkers" 2 weeks ago, Are the voice IDs known? and were there new voices (when I mean that, I meant the International voices) added other than those 2 or is it just those voices?
Many of us are wanting the following voices (Jane USA, Sara USA, Tony USA, and other MicMonster Voices) to be added on the website, and they still haven't been added. When there is a new character on Discord being introduced by other users, and they have the voice that isn't on the Bing Translator Category, and the description is long, I have trouble reading, and I use TTS Voices to help me read the whole description about certain characters and why they got introduced. Do you think you could add the rest of those voices on the website, so people can use them for fun, and other reasons, especially for the long descriptions of certain characters with voices that aren't put on the website? I would really love that.. Oh, and could you also add IVONA Neural voices, like Stephen USA, Ruth USA, Olivia Australia, Aria NZ, and many more? Many people want those to be added too.
Oh, and You might not know what MicMonster is, but it is another one of the websites that has all of the Neural voices, but it doesn't have the voices like Stephen, Ruth, Aria NZ, Arthur UK, and many more. I personally think the character limit should be at least the same as the Bing Translator voices, or you could do 1000 characters for the rest of the voices, and they shouldn't sound muffled and everything, like they used to be when they first got added into an animation studio back in January 2022. Here is the link to the MicMonster website, incase you don't know what it is. https://micmonster.com/
Btw, I do have a big issue, and that will be the main topic of this message. The Oddcast voices, as I saw, they don't seem to be working. Can you fix that issue?
Hello.
Anyone knows a way to test the Streamlabs "Legacy Voices"? I just look up with this and no one of the ones that work doesn't seems from them.
What is the API these voices come from?
Thanks!
TikTok throws Error: Couldn't load speech. Try again.
ReadSpeaker throws Error: Unknown error.
iSpeech outputs no error but also no sound.
Tested on the latest Firefox on Arch Linux and Windows 7, same results on both machines.
for some voices (for example, Samantha (US)), punctuation, like periods, does not get read using this site. this issue is easy to replicate by just having more than one sentence. considering chat members are likely to do this it's a pretty important issue
The Optimus Prime voice on TikTok no longer works, it returns a "This voice is unavailable now" error message on all languages.
Hello @chrisjp
When I tried to type in something when I used any oddcast voice, an HTTP Error 401 error pops up. Can you please try to fix this bug?
Thanks
Malcolm Johnson
Hm, the page is down, do you want to github.io it as a page? Would that work?
Streamlabs recently added the Amazon Polly neural voices.
I am not listing all the new voices, but here are the US English ones:
Danielle (female)
Gregory (male)
Kevin (child male)
Ruth (female)
Stephen (male)
Are there any plans on adding these and the other new voices I haven't mentioned?
Inspired to open because of Chris. Anyone wanting any voice API requests just please request them here.
Tried using the TikTok voices and they do not work with the error: Couldn't load speech. Try again.
Streamlabs changed how Polly speech is requested.
Now, it requires a referer in the header, but the request is still simple:
curl 'https://streamlabs.com/polly/speak' \
-H 'referer: https://streamlabs.com' \
--data-raw 'text=This+is+a+test+donation+for+%2416.00.&voice=Brian'
This is not an actual "issue", just a list of websites offering TTS voices that I have already successfully implemented for rendering TTS audio using simple internet requests (similar to the ones already available in this project). No accounts or access keys are needed for these, and the list has now grown to 100 engines/sites (all verified to be working as of today), offering more than 24.000 voices.
This is just in case you are looking for inspiration for more sites/voices to add (and with the certainty that these can actually be accessed using normal requests).
[ 0]: 'GoogleTranslate' [64 voices, 2 parameters] [http://translate.google.com/]
[ 1]: 'Festival' [18 voices, 2 parameters, Festival] [https://www.cstr.ed.ac.uk/projects/festival/]
[ 2]: 'Cerence' [138 voices, 1 parameter, Nuance Vocalizer] [https://codefactoryglobal.com/]
[ 3]: 'Sestek' [24 voices, 2 parameters] [https://ttsdemo.sestek.com/]
[ 4]: 'SpeechGen' [694 voices, 2 parameters, Amazon Polly, Microsoft Azure] [https://speechgen.io]
[ 5]: 'iSpeech' [40 voices, 2 parameters] [http://www.ispeech.org/]
[ 6]: 'VoiceRSS API' [49 voices, 4 parameters] [http://www.voicerss.org/]
[ 7]: 'VoiceRSS WEB' [49 voices, 2 parameters] [https://voicerss.org/]
[ 8]: 'Responsive Voice' [98 voices, 5 parameters] [https://responsivevoice.org/]
[ 9]: 'TextToMP3' [25 voices, 2 parameters] [https://www.texttomp3.online/]
[ 10]: 'Text2Speech' [6 voices, 3 parameters] [https://www.text2speech.org/]
[ 11]: 'IBM Watson' [30 voices, 4 parameters, IBM Watson] [https://www.ibm.com/demos/live/tts-demo/]
[ 12]: 'TTSMP3' [60 voices, 2 parameters, Amazon Polly] [https://www.ttsmp3.com/]
[ 13]: 'InfoRobo' [60 voices, 4 parameters] [https://inforobo.com/]
[ 14]: 'PlayHT' [829 voices, 5 parameters, Amazon Polly, Google Wavenet, IBM Watson, Microsoft Azure] [https://play.ht/]
[ 15]: 'TTSRobotRU' [46 voices, 4 parameters, Yandex] [http://texttospeechrobot.com/]
[ 16]: 'VoxWorker' [2 voices, 4 parameters] [https://voxworker.com/]
[ 17]: 'Acapela' [239 voices, 2 parameters] [https://www.acapela-group.com/]
[ 18]: 'AcapelaDemo' [1 voice, 2 parameters] [https://www.acapela-group.com/]
[ 19]: 'Cepstral' [27 voices, 5 parameters] [https://www.cepstral.com/]
[ 20]: 'ODO' [220 voices, 5 parameters, Espeak, MBROLA] [https://odo.lv/]
[ 21]: 'Cereproc' [134 voices, 2 parameters] [https://www.cereproc.com/]
[ 22]: 'TTSTool' [120 voices, 2 parameters, Amazon Polly, Microsoft Azure] [https://ttstool.com/]
[ 23]: 'TTSOnline' [12 voices, 4 parameters] [https://texttospeech.onl/]
[ 24]: 'Tetyys' [29 voices, 4 parameters, TruVoice, SAPI] [https://tetyys.com/]
[ 25]: 'JTalk' [6 voices, 5 parameters] [http://open-jtalk.sp.nitech.ac.jp/]
[ 26]: 'FliteHTS' [1 voice, 5 parameters, Festival] [http://flite-hts-engine.sp.nitech.ac.jp/]
[ 27]: 'ImTranslator' [11 voices, 3 parameters] [https://text-to-speech.imtranslator.net/]
[ 28]: 'Linguatec' [145 voices, 4 parameters, Nuance Vocalizer] [https://www.linguatec.de/]
[ 29]: 'Alfanum' [25 voices, 4 parameters] [https://www.alfanum.co.rs/]
[ 30]: 'SpeechTech' [15 voices, 2 parameters] [https://www.speechtech.cz/]
[ 31]: 'MelroseLabs' [60 voices, 2 parameters, Amazon Polly] [https://melroselabs.com/]
[ 32]: 'Listnr' [791 voices, 4 parameters, Amazon Polly, Google Wavenet, Microsoft Azure] [https://www.listnr.tech/]
[ 33]: 'ElevenLabs' [44 voices, 2 parameters] [https://beta.elevenlabs.io/]
[ 34]: 'Bhashini' [31 voices, 2 parameters] [https://tts.bhashini.ai/]
[ 35]: 'Oddcast' [288 voices, 3 parameters] [https://www.oddcast.com/]
[ 36]: 'Overdub' [8 voices, 2 parameters] [https://public.lyrebird.ai/]
[ 37]: 'Fasthub' [66 voices, 6 parameters] [https://fasthub.net/]
[ 38]: 'MicMonster' [488 voices, 2 parameters, Microsoft Azure] [https://micmonster.com/]
[ 39]: 'Uberduck' [41 voices, 2 parameters] [https://uberduck.ai/]
[ 40]: 'FakeYou' [3985 voices, 2 parameters] [https://fakeyou.com/]
[ 41]: 'NoteVibes' [181 voices, 2 parameters, Google Wavenet] [https://notevibes.com/]
[ 42]: 'RHVoice' [94 voices, 6 parameters] [https://data2data.ru/tts/]
[ 43]: 'VoiceMod' [21 voices, 3 parameters] [https://tuna.voicemod.net/text-to-speech]
[ 44]: 'BingTranslator' [313 voices, 4 parameters, Microsoft Azure] [https://www.bing.com/translator]
[ 45]: 'VoiceForge' [26 voices, 2 parameters] [https://voiceforge.com/]
[ 46]: 'Streamlabs' [60 voices, 2 parameters] [https://streamlabs.com/]
[ 47]: 'StreamElements' [205 voices, 2 parameters] [https://streamelements.com/]
[ 48]: 'OpenAI' [6 voices, 2 parameters] [https://platform.openai.com/]
[ 49]: 'ModelTalker' [20 voices, 2 parameters] [https://www.modeltalker.org/]
[ 50]: 'ReadTheWords' [15 voices, 2 parameters] [https://www.readthewords.com/]
[ 51]: 'ReadSpeaker' [132 voices, 2 parameters] [https://www.readspeaker.com/]
[ 52]: 'TTSFree' [731 voices, 2 parameters, Google Wavenet, Microsoft Azure] [https://ttsfree.com/]
[ 53]: 'Baidu' [6 voices, 4 parameters] [https://ai.baidu.com/tech/speech/tts_online]
[ 54]: 'VolcTrans' [36 voices, 2 parameters] [https://translate.volcengine.com/]
[ 55]: 'iMyPhone' [2564 voices, 2 parameters] [https://www.imyfone.com/]
[ 56]: 'GLaDOS' [1 voice, 2 parameters] [https://glados.c-net.org/]
[ 57]: 'AudioBot' [484 voices, 2 parameters, Google Wavenet, Microsoft Azure] [https://audio-bot.com/]
[ 58]: 'MP3TTS' [1255 voices, 7 parameters] [https://mp3tts.com/]
[ 59]: 'TextToVoice' [791 voices, 3 parameters, Amazon Polly, Google Wavenet, Microsoft Azure] [https://www.texttovoice.online/]
[ 60]: 'AnyToSpeech' [257 voices, 2 parameters, Google Wavenet] [https://anytospeech.com/]
[ 61]: 'Youdao' [58 voices, 3 parameters] [https://youdao.com/]
[ 62]: 'YoudaoDict' [37 voices, 2 parameters] [http://dict.youdao.com/]
[ 63]: 'SpanishDict' [2 voices, 2 parameters] [https://spanishdict.com/]
[ 64]: 'Yandex' [2 voices, 2 parameters, Yandex] [http://tts.voicetech.yandex.net/tts]
[ 65]: 'Naver' [16 voices, 5 parameters] [https://naver.com/]
[ 66]: 'Speechify' [221 voices, 2 parameters, Google Wavenet, Microsoft Azure, Speechify] [https://speechify.com/]
[ 67]: 'MWSReader' [26 voices, 2 parameters] [https://www.mwsreader.com/]
[ 68]: 'NextUp' [45 voices, 2 parameters, Ivona] [https://nextup.com/]
[ 69]: 'TTSMagic' [150 voices, 2 parameters, Amazon Polly, Google Wavenet, Microsoft Azure] [https://www.ttsmagic.com/]
[ 70]: 'Gesserit' [112 voices, 2 parameters, TikTok] [https://gesserit.co/]
[ 71]: 'Speech2Go' [47 voices, 2 parameters, Amazon Polly] [https://speech2go.online/]
[ 72]: 'TikTok' [112 voices, 2 parameters, TikTok] [https://weilbyte.github.io/tiktok-tts/]
[ 73]: 'Vidnoz' [313 voices, 2 parameters, Microsoft Azure] [https://www.vidnoz.com/]
[ 74]: 'Veed.io' [565 voices, 2 parameters, Microsoft Azure] [https://www.veed.io/]
[ 75]: 'Voicebooking' [428 voices, 2 parameters, Google Wavenet] [https://www.voicebooking.com/]
[ 76]: '101 Soundboards' [4720 voices, 2 parameters] [https://www.101soundboards.com/]
[ 77]: 'Crikk' [313 voices, 2 parameters, Microsoft Azure] [https://crikk.com/text-to-speech/]
[ 78]: 'Aquest' [36 voices, 3 parameters] [https://www.a-quest.com/]
[ 79]: 'Cyzon' [1 voice, 2 parameters, DECTalk] [https://tts.cyzon.us/]
[ 80]: 'SoundOfText' [61 voices, 2 parameters, Google Wavenet] [https://soundoftext.com/]
[ 81]: 'FluxToucan' [12 voices, 4 parameters] [https://flux9665-ims-toucan.hf.space/]
[ 82]: 'WhisperSpeech' [2 voices, 2 parameters] [https://replicate.com/lucataco/whisperspeech-small]
[ 83]: 'HierSpeechPP' [1 voice, 2 parameters] [https://replicate.com/adirik/hierspeechpp]
[ 84]: 'TortoiseTTS' [32 voices, 3 parameters] [https://replicate.com/afiaka87/tortoise-tts]
[ 85]: 'CoquiXTTS' [1 voice, 3 parameters] [https://replicate.com/lucataco/xtts-v2]
[ 86]: 'StyleTTS2' [1 voice, 2 parameters] [https://replicate.com/adirik/styletts2]
[ 87]: 'Talkify' [246 voices, 5 parameters] [https://talkify.net/]
[ 88]: 'Bark' [1 voice, 2 parameters] [https://replicate.com/suno-ai/bark]
[ 89]: 'Google Pico' [6 voices, 4 parameters] [https://android.googlesource.com/]
[ 90]: 'C64 SAM' [1 voice, 3 parameters] [https://discordier.github.io/sam/]
[ 91]: 'Ronan' [5 voices, 6 parameters] [https://www.pouet.net/prod.php?which=15073]
[ 92]: 'Piper' [3 voices, 2 parameters] [https://github.com/rhasspy/piper]
[ 93]: 'Sherpa' [109 voices, 2 parameters] [https://github.com/k2-fsa/sherpa-onnx]
[ 94]: 'EspeakNG' [93 voices, 4 parameters] [https://github.com/espeak-ng/]
[ 95]: 'STSpeech' [2 voices, 3 parameters] [https://www.atariuptodate.de/en/1686/st-speech]
[ 96]: 'GnuSpeech' [5 voices, 4 parameters] [https://en.wikipedia.org/wiki/Gnuspeech]
[ 97]: 'DECTalk' [9 voices, 3 parameters, DECTalk] [https://en.wikipedia.org/wiki/DECtalk]
[ 98]: 'RSynth' [1 voice, 4 parameters] [https://rsynth.sourceforge.net/]
[ 99]: 'Balcon' [14 voices, 4 parameters, SAPI] [https://www.cross-plus-a.com/balabolka.htm]
--> 100 engines, 24026 voices
When I tried to generate the voices, I can hear a new background noises where people talking in when the voices play after the previous API is no longer working on Acapela Downloader
I just want to report that the loquendo voices from Oddcast have suffered a glitch that had made them a lot louder than it should be. That includes Allison, Alan, Catherine, Dave, Elizabeth, Grace, Simon, Steven, Susan, Veena, etc, and they come out a lot louder than it should be. If you can look into this error, that will be greatly appreciated. Thank you.
Last updated: 3rd October, 2023
A number of the APIs have voices available that we either don't know the IDs for (if closed source like TikTok for example) or we do know them but for some reason they don't work. This issue aims to keep track of them all and can be updated as and when they're resolved.
Included are the JSON entries that would be in voices.json
if they were working, in case you want to try them out for yourself on your own locally hosted copy of this library.
As a closed source app it's difficult to obtain the voice IDs. I previously relied on contributors to other GitHub repos to find these out. In the app there are a lot of named TTS voices that don't match their IDs, furthermore, there are many unique to certain countries/languages.
oscie57 and other contributors to oscie57/tiktok-voice#1 have been a reliable source of voice IDs so far. And thanks to the input of others there I've been able able to ascertain all of the English language voices that were missing.
Currently unknown English language voice IDs:
None!
It is now possible to obtain voice IDs from other countries (see replies), so these are currently in progress.
5 of the 'standard' engine Polly voices do not work. My guess is that these were intentionally removed by StreamElements from their API and replaced with better (in their opinion) alternatives from the Google Text-to-Speech ones they added.
Additionally, the Hebrew voice "Doron" (not a Polly voice) returns an error response despite being selectable by streamers in their dashboard - I would expect StreamElements to either fix or remove this one at some point as it's their only option for Hebrew speakers.
{"vid": "Zeina", "name": "Zeina", "flag": "ARAB", "lang": "Arabic", "accent": "", "gender": "F"},
{"vid": "Lea", "name": "Léa", "flag": "FR", "lang": "French", "accent": "", "gender": "F"},
{"vid": "Camila", "name": "Camila", "flag": "BR", "lang": "Portuguese", "accent": "Brazilian", "gender": "F"},
{"vid": "Lucia", "name": "Lucia", "flag": "ES", "lang": "Spanish", "accent": "European", "gender": "F"},
{"vid": "Lupe", "name": "Lupe", "flag": "US", "lang": "Spanish", "accent": "American", "gender": "F"},
{"vid": "Doron", "name": "Doron", "flag": "IL", "lang": "Hebrew", "accent": "", "gender": "M"},
No known issues.
No known issues.
No known issues.
No known issues.
No known issues.
No known issues, however the translate site will need to be checked every so often to see if any languages have had a voice added.
A grand total of 142 of Microsoft's bank of voices do not work via the Bing Translator API endpoint we use to generate audio. While some of these are legitimately still in what they call a 'preview' phase, the majority don't appear to have any limitations. My guess is that Microsoft feel these ones aren't as suitable for reading user translations (unclear accent maybe?), though in any case it's odd that Bing specifically isn't able to access them given it's a first party product of theirs.
I don't hold much hope for many of these to ever work though those in preview (with a superscript ¹) may be worth checking from time to time.
{"vid": "en-AU-AnnetteNeural", "name": "Annette", "flag": "AU", "lang": "English", "accent": "Australia", "gender": "F"},
{"vid": "en-AU-CarlyNeural", "name": "Carly", "flag": "AU", "lang": "English", "accent": "Australia", "gender": "F"},
{"vid": "en-AU-DarrenNeural", "name": "Darren", "flag": "AU", "lang": "English", "accent": "Australia", "gender": "M"},
{"vid": "en-AU-DuncanNeural", "name": "Duncan", "flag": "AU", "lang": "English", "accent": "Australia", "gender": "M"},
{"vid": "en-AU-ElsieNeural", "name": "Elsie", "flag": "AU", "lang": "English", "accent": "Australia", "gender": "F"},
{"vid": "en-AU-FreyaNeural", "name": "Freya", "flag": "AU", "lang": "English", "accent": "Australia", "gender": "F"},
{"vid": "en-AU-JoanneNeural", "name": "Joanne", "flag": "AU", "lang": "English", "accent": "Australia", "gender": "F"},
{"vid": "en-AU-KenNeural", "name": "Ken", "flag": "AU", "lang": "English", "accent": "Australia", "gender": "M"},
{"vid": "en-AU-KimNeural", "name": "Kim", "flag": "AU", "lang": "English", "accent": "Australia", "gender": "F"},
{"vid": "en-AU-NeilNeural", "name": "Neil", "flag": "AU", "lang": "English", "accent": "Australia", "gender": "M"},
{"vid": "en-AU-TimNeural", "name": "Tim", "flag": "AU", "lang": "English", "accent": "Australia", "gender": "M"},
{"vid": "en-AU-TinaNeural", "name": "Tina", "flag": "AU", "lang": "English", "accent": "Australia", "gender": "F"},
{"vid": "en-GB-AbbiNeural", "name": "Abbi", "flag": "GB", "lang": "English", "accent": "United Kingdom", "gender": "F"},
{"vid": "en-GB-AlfieNeural", "name": "Alfie", "flag": "GB", "lang": "English", "accent": "United Kingdom", "gender": "M"},
{"vid": "en-GB-BellaNeural", "name": "Bella", "flag": "GB", "lang": "English", "accent": "United Kingdom", "gender": "F"},
{"vid": "en-GB-ElliotNeural", "name": "Elliot", "flag": "GB", "lang": "English", "accent": "United Kingdom", "gender": "M"},
{"vid": "en-GB-EthanNeural", "name": "Ethan", "flag": "GB", "lang": "English", "accent": "United Kingdom", "gender": "M"},
{"vid": "en-GB-HollieNeural", "name": "Hollie", "flag": "GB", "lang": "English", "accent": "United Kingdom", "gender": "F"},
{"vid": "en-GB-NoahNeural", "name": "Noah", "flag": "GB", "lang": "English", "accent": "United Kingdom", "gender": "M"},
{"vid": "en-GB-OliverNeural", "name": "Oliver", "flag": "GB", "lang": "English", "accent": "United Kingdom", "gender": "M"},
{"vid": "en-GB-OliviaNeural", "name": "Olivia", "flag": "GB", "lang": "English", "accent": "United Kingdom", "gender": "F"},
{"vid": "en-US-AIGenerateNeural", "name": "AI Generate", "flag": "US", "lang": "English", "accent": "American", "gender": "F"},
{"vid": "en-US-AIGenerateNeural", "name": "AI Generate", "flag": "US", "lang": "English", "accent": "American", "gender": "M"},
{"vid": "en-US-DavisNeural", "name": "Davis", "flag": "US", "lang": "English", "accent": "American", "gender": "M"},
{"vid": "en-US-JaneNeural", "name": "Jane", "flag": "US", "lang": "English", "accent": "American", "gender": "F"},
{"vid": "en-US-JasonNeural", "name": "Jason", "flag": "US", "lang": "English", "accent": "American", "gender": "M"},
{"vid": "en-US-JennyMultilingualNeural", "name": "Jenny Multilingual", "flag": "US", "lang": "English", "accent": "American", "gender": "F"},
{"vid": "en-US-NancyNeural", "name": "Nancy", "flag": "US", "lang": "English", "accent": "American", "gender": "F"},
{"vid": "en-US-SaraNeural", "name": "Sara", "flag": "US", "lang": "English", "accent": "American", "gender": "F"},
{"vid": "en-US-TonyNeural", "name": "Tony", "flag": "US", "lang": "English", "accent": "American", "gender": "M"},
{"vid": "ca-ES-AlbaNeural", "name": "Alba", "flag": "ES-CT", "lang": "Catalan", "accent": "", "gender": "F"},
{"vid": "de-DE-BerndNeural", "name": "Bernd", "flag": "DE", "lang": "German", "accent": "", "gender": "M"},
{"vid": "de-DE-ChristophNeural", "name": "Christoph", "flag": "DE", "lang": "German", "accent": "", "gender": "M"},
{"vid": "de-DE-ElkeNeural", "name": "Elke", "flag": "DE", "lang": "German", "accent": "", "gender": "F"},
{"vid": "de-DE-GiselaNeural", "name": "Gisela", "flag": "DE", "lang": "German", "accent": "", "gender": "F"},
{"vid": "de-DE-KasperNeural", "name": "Kasper", "flag": "DE", "lang": "German", "accent": "", "gender": "M"},
{"vid": "de-DE-KlarissaNeural", "name": "Klarissa", "flag": "DE", "lang": "German", "accent": "", "gender": "F"},
{"vid": "de-DE-KlausNeural", "name": "Klaus", "flag": "DE", "lang": "German", "accent": "", "gender": "M"},
{"vid": "de-DE-LouisaNeural", "name": "Louisa", "flag": "DE", "lang": "German", "accent": "", "gender": "F"},
{"vid": "de-DE-MajaNeural", "name": "Maja", "flag": "DE", "lang": "German", "accent": "", "gender": "F"},
{"vid": "de-DE-RalfNeural", "name": "Ralf", "flag": "DE", "lang": "German", "accent": "", "gender": "M"},
{"vid": "de-DE-TanjaNeural", "name": "Tanja", "flag": "DE", "lang": "German", "accent": "", "gender": "F"},
{"vid": "es-ES-AbrilNeural", "name": "Abril", "flag": "ES", "lang": "Spanish", "accent": "Spain", "gender": "F"},
{"vid": "es-ES-ArnauNeural", "name": "Arnau", "flag": "ES", "lang": "Spanish", "accent": "Spain", "gender": "M"},
{"vid": "es-ES-DarioNeural", "name": "Dario", "flag": "ES", "lang": "Spanish", "accent": "Spain", "gender": "M"},
{"vid": "es-ES-EliasNeural", "name": "Elias", "flag": "ES", "lang": "Spanish", "accent": "Spain", "gender": "M"},
{"vid": "es-ES-EstrellaNeural", "name": "Estrella", "flag": "ES", "lang": "Spanish", "accent": "Spain", "gender": "F"},
{"vid": "es-ES-IreneNeural", "name": "Irene", "flag": "ES", "lang": "Spanish", "accent": "Spain", "gender": "F"},
{"vid": "es-ES-LaiaNeural", "name": "Laia", "flag": "ES", "lang": "Spanish", "accent": "Spain", "gender": "F"},
{"vid": "es-ES-LiaNeural", "name": "Lia", "flag": "ES", "lang": "Spanish", "accent": "Spain", "gender": "F"},
{"vid": "es-ES-NilNeural", "name": "Nil", "flag": "ES", "lang": "Spanish", "accent": "Spain", "gender": "M"},
{"vid": "es-ES-SaulNeural", "name": "Saul", "flag": "ES", "lang": "Spanish", "accent": "Spain", "gender": "M"},
{"vid": "es-ES-TeoNeural", "name": "Teo", "flag": "ES", "lang": "Spanish", "accent": "Spain", "gender": "M"},
{"vid": "es-ES-TrianaNeural", "name": "Triana", "flag": "ES", "lang": "Spanish", "accent": "Spain", "gender": "F"},
{"vid": "es-ES-VeraNeural", "name": "Vera", "flag": "ES", "lang": "Spanish", "accent": "Spain", "gender": "F"},
{"vid": "es-MX-BeatrizNeural", "name": "Beatriz", "flag": "MX", "lang": "Spanish", "accent": "Mexico", "gender": "F"},
{"vid": "es-MX-CandelaNeural", "name": "Candela", "flag": "MX", "lang": "Spanish", "accent": "Mexico", "gender": "F"},
{"vid": "es-MX-CarlotaNeural", "name": "Carlota", "flag": "MX", "lang": "Spanish", "accent": "Mexico", "gender": "F"},
{"vid": "es-MX-CecilioNeural", "name": "Cecilio", "flag": "MX", "lang": "Spanish", "accent": "Mexico", "gender": "M"},
{"vid": "es-MX-GerardoNeural", "name": "Gerardo", "flag": "MX", "lang": "Spanish", "accent": "Mexico", "gender": "M"},
{"vid": "es-MX-LarissaNeural", "name": "Larissa", "flag": "MX", "lang": "Spanish", "accent": "Mexico", "gender": "F"},
{"vid": "es-MX-LibertoNeural", "name": "Liberto", "flag": "MX", "lang": "Spanish", "accent": "Mexico", "gender": "M"},
{"vid": "es-MX-LucianoNeural", "name": "Luciano", "flag": "MX", "lang": "Spanish", "accent": "Mexico", "gender": "M"},
{"vid": "es-MX-MarinaNeural", "name": "Marina", "flag": "MX", "lang": "Spanish", "accent": "Mexico", "gender": "F"},
{"vid": "es-MX-NuriaNeural", "name": "Nuria", "flag": "MX", "lang": "Spanish", "accent": "Mexico", "gender": "F"},
{"vid": "es-MX-PelayoNeural", "name": "Pelayo", "flag": "MX", "lang": "Spanish", "accent": "Mexico", "gender": "M"},
{"vid": "es-MX-RenataNeural", "name": "Renata", "flag": "MX", "lang": "Spanish", "accent": "Mexico", "gender": "F"},
{"vid": "es-MX-YagoNeural", "name": "Yago", "flag": "MX", "lang": "Spanish", "accent": "Mexico", "gender": "M"},
{"vid": "eu-ES-AinhoaNeural", "name": "Ainhoa", "flag": "ES-PV", "lang": "Basque", "accent": "", "gender": "F"},
{"vid": "eu-ES-AnderNeural", "name": "Ander", "flag": "ES-PV", "lang": "Basque", "accent": "", "gender": "M"},
{"vid": "fr-FR-AlainNeural", "name": "Alain", "flag": "FR", "lang": "French", "accent": "", "gender": "M"},
{"vid": "fr-FR-BrigitteNeural", "name": "Brigitte", "flag": "FR", "lang": "French", "accent": "", "gender": "F"},
{"vid": "fr-FR-CelesteNeural", "name": "Celeste", "flag": "FR", "lang": "French", "accent": "", "gender": "F"},
{"vid": "fr-FR-ClaudeNeural", "name": "Claude", "flag": "FR", "lang": "French", "accent": "", "gender": "M"},
{"vid": "fr-FR-CoralieNeural", "name": "Coralie", "flag": "FR", "lang": "French", "accent": "", "gender": "F"},
{"vid": "fr-FR-JacquelineNeural", "name": "Jacqueline", "flag": "FR", "lang": "French", "accent": "", "gender": "F"},
{"vid": "fr-FR-JeromeNeural", "name": "Jerome", "flag": "FR", "lang": "French", "accent": "", "gender": "M"},
{"vid": "fr-FR-JosephineNeural", "name": "Josephine", "flag": "FR", "lang": "French", "accent": "", "gender": "F"},
{"vid": "fr-FR-MauriceNeural", "name": "Maurice", "flag": "FR", "lang": "French", "accent": "", "gender": "M"},
{"vid": "fr-FR-YvesNeural", "name": "Yves", "flag": "FR", "lang": "French", "accent": "", "gender": "M"},
{"vid": "fr-FR-YvetteNeural", "name": "Yvette", "flag": "FR", "lang": "French", "accent": "", "gender": "F"},
{"vid": "hy-AM-AnahitNeural", "name": "Anahit", "flag": "AM", "lang": "Armenian", "accent": "", "gender": "F"},
{"vid": "hy-AM-HaykNeural", "name": "Hayk", "flag": "AM", "lang": "Armenian", "accent": "", "gender": "M"},
{"vid": "it-IT-BenignoNeural", "name": "Benigno", "flag": "IT", "lang": "Italian", "accent": "", "gender": "M"},
{"vid": "it-IT-CalimeroNeural", "name": "Calimero", "flag": "IT", "lang": "Italian", "accent": "", "gender": "M"},
{"vid": "it-IT-CataldoNeural", "name": "Cataldo", "flag": "IT", "lang": "Italian", "accent": "", "gender": "M"},
{"vid": "it-IT-FabiolaNeural", "name": "Fabiola", "flag": "IT", "lang": "Italian", "accent": "", "gender": "F"},
{"vid": "it-IT-FiammaNeural", "name": "Fiamma", "flag": "IT", "lang": "Italian", "accent": "", "gender": "F"},
{"vid": "it-IT-GianniNeural", "name": "Gianni", "flag": "IT", "lang": "Italian", "accent": "", "gender": "M"},
{"vid": "it-IT-ImeldaNeural", "name": "Imelda", "flag": "IT", "lang": "Italian", "accent": "", "gender": "F"},
{"vid": "it-IT-IrmaNeural", "name": "Irma", "flag": "IT", "lang": "Italian", "accent": "", "gender": "F"},
{"vid": "it-IT-LisandroNeural", "name": "Lisandro", "flag": "IT", "lang": "Italian", "accent": "", "gender": "M"},
{"vid": "it-IT-PalmiraNeural", "name": "Palmira", "flag": "IT", "lang": "Italian", "accent": "", "gender": "F"},
{"vid": "it-IT-PierinaNeural", "name": "Pierina", "flag": "IT", "lang": "Italian", "accent": "", "gender": "F"},
{"vid": "it-IT-RinaldoNeural", "name": "Rinaldo", "flag": "IT", "lang": "Italian", "accent": "", "gender": "M"},
{"vid": "ja-JP-AoiNeural", "name": "Aoi", "flag": "JP", "lang": "Japanese", "accent": "", "gender": "F"},
{"vid": "ja-JP-DaichiNeural", "name": "Daichi", "flag": "JP", "lang": "Japanese", "accent": "", "gender": "M"},
{"vid": "ja-JP-MayuNeural", "name": "Mayu", "flag": "JP", "lang": "Japanese", "accent": "", "gender": "F"},
{"vid": "ja-JP-NaokiNeural", "name": "Naoki", "flag": "JP", "lang": "Japanese", "accent": "", "gender": "M"},
{"vid": "ja-JP-ShioriNeural", "name": "Shiori", "flag": "JP", "lang": "Japanese", "accent": "", "gender": "F"},
{"vid": "ko-KR-BongJinNeural", "name": "Bong Jin", "flag": "KR", "lang": "Korean", "accent": "", "gender": "M"},
{"vid": "ko-KR-GookMinNeural", "name": "Gook Min", "flag": "KR", "lang": "Korean", "accent": "", "gender": "M"},
{"vid": "ko-KR-JiMinNeural", "name": "Ji Min", "flag": "KR", "lang": "Korean", "accent": "", "gender": "F"},
{"vid": "ko-KR-SeoHyeonNeural", "name": "Seo Hyeon", "flag": "KR", "lang": "Korean", "accent": "", "gender": "F"},
{"vid": "ko-KR-SoonBokNeural", "name": "Soon Bok", "flag": "KR", "lang": "Korean", "accent": "", "gender": "F"},
{"vid": "ko-KR-YuJinNeural", "name": "Yu Jin", "flag": "KR", "lang": "Korean", "accent": "", "gender": "F"},
{"vid": "pl-PL-AgnieszkaNeural", "name": "Agnieszka", "flag": "PL", "lang": "Polish", "accent": "", "gender": "F"},
{"vid": "pt-BR-BrendaNeural", "name": "Brenda", "flag": "BR", "lang": "Portuguese", "accent": "Brazil", "gender": "F"},
{"vid": "pt-BR-DonatoNeural", "name": "Donato", "flag": "BR", "lang": "Portuguese", "accent": "Brazil", "gender": "M"},
{"vid": "pt-BR-ElzaNeural", "name": "Elza", "flag": "BR", "lang": "Portuguese", "accent": "Brazil", "gender": "F"},
{"vid": "pt-BR-FabioNeural", "name": "Fabio", "flag": "BR", "lang": "Portuguese", "accent": "Brazil", "gender": "M"},
{"vid": "pt-BR-GiovannaNeural", "name": "Giovanna", "flag": "BR", "lang": "Portuguese", "accent": "Brazil", "gender": "F"},
{"vid": "pt-BR-HumbertoNeural", "name": "Humberto", "flag": "BR", "lang": "Portuguese", "accent": "Brazil", "gender": "M"},
{"vid": "pt-BR-JulioNeural", "name": "Julio", "flag": "BR", "lang": "Portuguese", "accent": "Brazil", "gender": "M"},
{"vid": "pt-BR-LeilaNeural", "name": "Leila", "flag": "BR", "lang": "Portuguese", "accent": "Brazil", "gender": "F"},
{"vid": "pt-BR-LeticiaNeural", "name": "Leticia", "flag": "BR", "lang": "Portuguese", "accent": "Brazil", "gender": "F"},
{"vid": "pt-BR-ManuelaNeural", "name": "Manuela", "flag": "BR", "lang": "Portuguese", "accent": "Brazil", "gender": "F"},
{"vid": "pt-BR-NicolauNeural", "name": "Nicolau", "flag": "BR", "lang": "Portuguese", "accent": "Brazil", "gender": "M"},
{"vid": "pt-BR-ValerioNeural", "name": "Valerio", "flag": "BR", "lang": "Portuguese", "accent": "Brazil", "gender": "M"},
{"vid": "pt-BR-YaraNeural", "name": "Yara", "flag": "BR", "lang": "Portuguese", "accent": "Brazil", "gender": "F"},
{"vid": "wuu-CN-XiaotongNeural", "name": "Xiaotong", "flag": "CN", "lang": "Chinese", "accent": "Wu, Simplified", "gender": "F"},
{"vid": "wuu-CN-YunzheNeural", "name": "Yunzhe", "flag": "CN", "lang": "Chinese", "accent": "Wu, Simplified", "gender": "M"},
{"vid": "yue-CN-XiaoMinNeural", "name": "Xiao Min", "flag": "CN", "lang": "Chinese", "accent": "Cantonese, Simplified", "gender": "F"},
{"vid": "yue-CN-YunSongNeural", "name": "Yun Song", "flag": "CN", "lang": "Chinese", "accent": "Cantonese, Simplified", "gender": "M"},
{"vid": "zh-CN-XiaochenNeural", "name": "Xiaochen", "flag": "CN", "lang": "Chinese", "accent": "Mandarin, Simplified", "gender": "F"},
{"vid": "zh-CN-XiaohanNeural", "name": "Xiaohan", "flag": "CN", "lang": "Chinese", "accent": "Mandarin, Simplified", "gender": "F"},
{"vid": "zh-CN-XiaomengNeural", "name": "Xiaomeng", "flag": "CN", "lang": "Chinese", "accent": "Mandarin, Simplified", "gender": "F"},
{"vid": "zh-CN-XiaomoNeural", "name": "Xiaomo", "flag": "CN", "lang": "Chinese", "accent": "Mandarin, Simplified", "gender": "F"},
{"vid": "zh-CN-XiaoqiuNeural", "name": "Xiaoqiu", "flag": "CN", "lang": "Chinese", "accent": "Mandarin, Simplified", "gender": "F"},
{"vid": "zh-CN-XiaoruiNeural", "name": "Xiaorui", "flag": "CN", "lang": "Chinese", "accent": "Mandarin, Simplified", "gender": "F"},
{"vid": "zh-CN-XiaoshuangNeural", "name": "Xiaoshuang", "flag": "CN", "lang": "Chinese", "accent": "Mandarin, Simplified", "gender": "F"},
{"vid": "zh-CN-XiaoxuanNeural", "name": "Xiaoxuan", "flag": "CN", "lang": "Chinese", "accent": "Mandarin, Simplified", "gender": "F"},
{"vid": "zh-CN-XiaoyanNeural", "name": "Xiaoyan", "flag": "CN", "lang": "Chinese", "accent": "Mandarin, Simplified", "gender": "F"},
{"vid": "zh-CN-XiaoyouNeural", "name": "Xiaoyou", "flag": "CN", "lang": "Chinese", "accent": "Mandarin, Simplified", "gender": "F"},
{"vid": "zh-CN-XiaozhenNeural", "name": "Xiaozhen", "flag": "CN", "lang": "Chinese", "accent": "Mandarin, Simplified", "gender": "F"},
{"vid": "zh-CN-YunfengNeural", "name": "Yunfeng", "flag": "CN", "lang": "Chinese", "accent": "Mandarin, Simplified", "gender": "M"},
{"vid": "zh-CN-YunhaoNeural", "name": "Yunhao", "flag": "CN", "lang": "Chinese", "accent": "Mandarin, Simplified", "gender": "M"},
{"vid": "zh-CN-YunyeNeural", "name": "Yunye", "flag": "CN", "lang": "Chinese", "accent": "Mandarin, Simplified", "gender": "M"},
{"vid": "zh-CN-YunzeNeural", "name": "Yunze", "flag": "CN", "lang": "Chinese", "accent": "Mandarin, Simplified", "gender": "M"},
{"vid": "zh-CN-henan-YundengNeural", "name": "Yundeng", "flag": "CN", "lang": "Chinese", "accent": "Zhongyuan Mandarin Henan", "gender": "M"},
{"vid": "zh-CN-shandong-YunxiangNeural", "name": "Yunxiang", "flag": "CN", "lang": "Chinese", "accent": "Jilu Mandarin, Simplified", "gender": "M"},
{"vid": "zh-CN-sichuan-YunxiNeural", "name": "Yunxi", "flag": "CN", "lang": "Chinese", "accent": "Southwestern Mandarin, Simplified", "gender": "M"},
One voice always results in a timeout error.
{"vid": "Layo", "name": "Layo", "flag": "NG", "lang": "English", "accent": "Nigerian", "gender": "F"},
Removed. Demo website is now paywalled and voice synthesis can no longer be accessed for free.
Removed. Demo website has been non-functional since late 2022. The API is still functioning, though, but obviously requires a valid API key. As such this has effectively paywalled the service.
Now available again (as of 3rd October, 2023) by using their actual API this time.
The "Greek Female" voice is no longer listed in the documentation but is still working.
The "Taiwan Chinese Female" voice works with the demo key but errors with some API keys, reporting it as an "Invalid voice". It is unknown why this happens.
When I use the Simon and Steven voices when I put in to exclamation points (!) They become earrape on Oddcast/Voki voices. Please fix.
Also, can you add Microsoft David voices?
When "hotlinking" Google Translate audio URLs in an <audio>
tag a 404 is returned, this is in spite of the URL functioning as normal when accessed directly in the browser. To workaround this we should fetch (via proxy.php) if possible and save the mp3 locally if enabled, if not, we should provide a data URI so the audio is at least playable.
If this workaround fails we may as well remove the voices.
I'm making this issue because yesterday, the voices from CereProc happened to stopped working, but the site now has it working again, https://www.cereproc.com/ but not in this site, every voice I use from that api results in a "input data format error", Did CereProc changed their api or something? Is there anything you can do Chris?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.