================================ Please note: ================================ all generation tools will use your saved browser settings for your elevenlabs account
Log Saving/Loading is done with a csv file, matching the batch generation format. You can also load a csv to the log to view it, if desired.
================================ TTS batch Generation ================================ Requires A CSV file, you can generate one with dialogue from Xedit Use google sheets or Excel or similar app to move columns around
CSV columns one and two should match this format: Column 1, Column 2 "Filename","Response Text"
Quotations are only needed if the text contains special characters or punctuation.
================================ CSV File Copying Help ================================ Note; CSV columns 3 & 4 are used for batch file copying.
You can add tags to these columns so that when you can copy files they will be added to a new subdirectory.
Ex: Filename1,"I'm your wife" , "Lite Voices,Female only" , "" Filename2 , "I don't believe you" , "" , ""
Would output 3 subfolders in the target directory: "Lite Voices", "Female Only", and "Unspecified"
"I'm your wife" would be copied to both subfolders "lite voices" and "Female Only" while "I don't believe you" would be copied to the "unspecified" subfolder.
================================ Batch File Renaming ================================ Rename files based on a CSV file You can use this to convert filenames to the DBVO format
Note: Filenames that contain unsupported characters will have those characters converted to "_" and files that are duplicates will have "(#)" appended to the filename.
================================ STS Batch Generation ================================ Can use wav or mp3 files
All files from the target directory will be iterated through
If the output directory contains a file with the same name as the input directory The file will be skipped.
Must use a Language model that supports "STS"
================================ File output for single generations ================================ If no filename is specified the file will simply be saved with a timestamp for its filename
If no Output directory is specified A folder will be created in the Exe's location to store the files
For STS regeneration A "Recordings" folder will be created in the output directory With sent audio stored there for log regeneration Delete at your discretion, but know the app has no way to get this info back
================================ Special notes ================================ If you skip step 16 the app will still work fine, but I will be sad.
For some reason the tool isn't applying the settings from Elevenlabs when doing batch STS generation. It keeps generating at 50% stability and 100% similarity. Any way to change this?
Ah shoot, I forgot to remove the custom settings in the script. There's no way to change them without decompiling the Python. I'll include a fix in my update.
Do you think you can make an update because of the newest ElevenLabs v3 Update? Can't select the model unfortunately. It is using tags for better control over the emotions etc.
Hey I just found out about a new local model called Zonos ai the other day, take a look at it here https://github.com/Zyphra/Zonos It's honestly the only local TTS model I've found yet that can even hold a candle to ElevenLabs, so I decided to follow a youtube tutorial on how to run it in Windows on an Ubuntu VM, after a couple of hour of tinkering I got it to work somewhat well.
After you get it running in the VM you can just run the gradio interface on a localhost in your internet browser of choice and load and save files directly to your windows folders, the interface even has some API documentation and an API recorder so running a script like yours with this model should be possible.
You should look into it to see if you can make a new version of your program/script that works with Zonos and save a lot of money for people with already decent GPUs that can't pay the elevenlabs fees.
Meanwhile I'll work slowly and manually with every line for my Oblivion mod, here's a small sample I generated a minute ago https://www.mediafire.com/file/so52gykq1k2k9ya/Breton+Zonos.wav
Could be useful, I've been working on adding support for some other cheaper AI Models like Minimax. I'll take a look and see what it would take to support this and something like Tortoise maybe.
also to anyone looking into local generation, don't go for Tortoise, it is really subpar I really would place it barel above XVASynth Zonos isn't perfect, with longer generations I get lots of junk results and jittery pauses, but even at its worst it's so much more presentable and natural than Tortoise.
I'm gonna sound a little all over the place here but a new model dropped just the other day, it's much easier to run on windows and much more friendly to batch generation. It just take a little longer to train each individual voice, but the results are very VERY promising. https://github.com/RVC-Boss/GPT-SoVITS/releases/tag/20250606v2pro Zonos still beats it at some things like emoting but it's still a step up from pretty much any other local model.
Hi! This is a really amazing tool but I'm stupid and new to this, so I can't figure out what I'm doing wrong. I get an error when doing CSV batch generate. The error is: Error generating audio for row 000E179F_1.wxm: 400 Client Error: Bad Request for url: https://api.elevenlabs.io/v1/text-to-speech/acCWx...
It's probably something simple that I'm missing, but could I please get some help with this if possible?
If you have any spaces in your api key the batch generation won't be able to send it properly as it uses a different method to send the api key
Your subscription tier may not have access to the audio quality the tool is requesting. I have to add in a selection option for audio quality to fix this, sorry.
VoiceID incorrect or not added to your account
Request would exceed usage quota or character limit
Try removing .xwm from the filename and see if that helps.
Thanks so much for replying! I was going through your list and although it didn't end up being any of those, it did make me realise that I had indeed been stupid and forgotten one of the settings I needed. I was so busy worrying about the voice and output path fields that I just straight up forgot that I also needed to choose something for the model field. That's embarrassing, but yeah, your help actually did work in a roundabout way since it made me look even more closely at what I was doing. Thanks!!
I'm just getting going with this, but I have a mod that has quite a few new NPCs. A) I have to batch each voice individually which is a pain and B)I'm running out of voices. Do you have plans to add multiple voice batches and add more Elevenlabs voices?
A) you can run multiple instances of the app, so you can do multiple batches that way. But do keep in mind elevenlabs does place a limit on concurrent generations.
B) there is no limit to the number of elevenlabs voices you can have except the ones elevenlabs sets themselves, so not sure what you mean by this.
Yeah I wish I could easily take a screen shot. I've clicked "Get Available Voices" and the list is only Adam Stone, Alice, Aria, Bill, Brian, Callum, Charlie, etc...
But in my Elevenlabs account in Library, I've got totally different ones, Amelia, Jessica Ann Bogart, Ivy, Alexandra, on and on. I double checked my key too.
The only ones the app seems to not be getting for me are legacy models. All instant, community, and default voices appear as expected.
What tier are you subscribed to, does that tier allow api access?
Make sure you have loaded an api key for the correct account.
Unfortunately if there are restrictions on your account (region, sub tier, etc.) this app doesn't work around them. So it could be something on your end, but everything seems to be working fine on mine.
Hi! First of all, thank you for your effort and dedication in creating this tool. This is very useful!
But, unfortunately, I encountered an issue when using this app. When I try for the first time, the app is working as intended. But, when I want to try real work on it, I encountered an 401 error. I already tried changing my API keys, checking if my credits on ElevenLabs already depleted (and it's not), uninstalling and reinstalling, but it didn't work. Is there any solution for this?
note: for the screenshot of the error, here's the link (https://imgur.com/a/UQ2WC1m)
I was using text-to-speech first when testing, and it worked. Then, I tried using Speech-to-Speech Batch Generation, I was trying to revoicing a companion mod from Oblivion (all of the dialogue voicelines from one folder). It failed in the first try (it doesn't generate anything, even the first batch file that inputted). I realized that maybe my ElevenLabs plan that doesn't suitable with my request, so I tried to divide it by small chunks of folder. Error still occurred, even that I tried single text-to-speech again, it doesn't worked from the app.
But, if I try to directly use ElevenLabs STS from the website on the browser, I still can generate speech-to-speech voices, but I can't batch generate it (well it's tedious to convert ~6000 .mp3 files one by one lol)
Are there any spaces in your api key input field? I use a slightly different method of sending the api key for sta generation that doesn't remove spaces before or after the api key.
As long as you can get them in a csv with filename and dialogue in rows 1 & 2 you can use this for any game. You may have to convert the audio to a supported format though.
New update on its way with several improvements/Features! UTF-8 Encoded Foreign/Special Character Support STS batch Generation (can send MP3 or Wav) Custom TesVedit Script for getting dialogue (more reliably gets filenames) Batch CSV based file copying based on script notes/Edits information (Made for my mod, included in tool for others who may find it useful) Option to actually fully stop batch generation (Cancels generation instead of simply pausing it) Save Last Output Directory Save Custom STS Hotkey Searchable Log Longer Log (Up to 1000 entries) Option to Save/Load log
apply button? If you're talking about the API Key it is automatically applied once you click any of the generate buttons. You need an elevenlabs account to access the Elevenlabs API. Your api key can be found in your Elevenlabs Profile tab.
1) Open your mod in Xedit 2) right click on your mods name in the side window and click apply script. 3) select the export dialogue script 4) let the script run and save the text file to an easy to remember place 5) import to google sheets or excel and convert to csv (Default format is a tab delimited txt file) 6) Place filename in first column 7) place response text in second column (You can delete any other columns they don't matter) 8) Save as csv file
71 comments
================================
Please note:
================================
all generation tools will use your saved browser settings for your elevenlabs account
Log Saving/Loading is done with a csv file, matching the batch generation format. You can also load a csv to the log to view it, if desired.
================================
TTS batch Generation
================================
Requires A CSV file, you can generate one with dialogue from Xedit
Use google sheets or Excel or similar app to move columns around
CSV columns one and two should match this format:
Column 1, Column 2
"Filename","Response Text"
Quotations are only needed if the text contains special characters or punctuation.
================================
CSV File Copying Help
================================
Note; CSV columns 3 & 4 are used for batch file copying.
You can add tags to these columns so that when you can copy files they will be added to a new subdirectory.
Ex:
Filename1,"I'm your wife" , "Lite Voices,Female only" , ""
Filename2 , "I don't believe you" , "" , ""
Would output 3 subfolders in the target directory: "Lite Voices", "Female Only", and "Unspecified"
"I'm your wife" would be copied to both subfolders "lite voices" and "Female Only" while "I don't believe you" would be copied to the "unspecified" subfolder.
================================
Batch File Renaming
================================
Rename files based on a CSV file
You can use this to convert filenames to the DBVO format
Note: Filenames that contain unsupported characters will have those characters converted to "_" and files that are duplicates will have "(#)" appended to the filename.
================================
STS Batch Generation
================================
Can use wav or mp3 files
All files from the target directory will be iterated through
If the output directory contains a file with the same name as the input directory The file will be skipped.
Must use a Language model that supports "STS"
================================
File output for single generations
================================
If no filename is specified
the file will simply be saved with a timestamp for its filename
If no Output directory is specified
A folder will be created in the Exe's location to store the files
For STS regeneration
A "Recordings" folder will be created in the output directory
With sent audio stored there for log regeneration
Delete at your discretion, but know the app has no way to get this info back
================================
Special notes
================================
If you skip step 16 the app will still work fine, but I will be sad.
It looks like I also had speaker boost disabled.
I am looking into the documentation to see what will need updating.
https://github.com/Zyphra/Zonos
It's honestly the only local TTS model I've found yet that can even hold a candle to ElevenLabs, so I decided to follow a youtube tutorial on how to run it in Windows on an Ubuntu VM, after a couple of hour of tinkering I got it to work somewhat well.
After you get it running in the VM you can just run the gradio interface on a localhost in your internet browser of choice and load and save files directly to your windows folders, the interface even has some API documentation and an API recorder so running a script like yours with this model should be possible.
You should look into it to see if you can make a new version of your program/script that works with Zonos and save a lot of money for people with already decent GPUs that can't pay the elevenlabs fees.
Meanwhile I'll work slowly and manually with every line for my Oblivion mod, here's a small sample I generated a minute ago
https://www.mediafire.com/file/so52gykq1k2k9ya/Breton+Zonos.wav
Zonos isn't perfect, with longer generations I get lots of junk results and jittery pauses, but even at its worst it's so much more presentable and natural than Tortoise.
It just take a little longer to train each individual voice, but the results are very VERY promising.
https://github.com/RVC-Boss/GPT-SoVITS/releases/tag/20250606v2pro
Zonos still beats it at some things like emoting but it's still a step up from pretty much any other local model.
It's probably something simple that I'm missing, but could I please get some help with this if possible?
If you have any spaces in your api key the batch generation won't be able to send it properly as it uses a different method to send the api key
Your subscription tier may not have access to the audio quality the tool is requesting. I have to add in a selection option for audio quality to fix this, sorry.
VoiceID incorrect or not added to your account
Request would exceed usage quota or character limit
Try removing .xwm from the filename and see if that helps.
What is your language model/Sub tier?
B) there is no limit to the number of elevenlabs voices you can have except the ones elevenlabs sets themselves, so not sure what you mean by this.
As for the default voices the generator should get all voices available to your account. Have you tried scrolling through the combobox?
But in my Elevenlabs account in Library, I've got totally different ones, Amelia, Jessica Ann Bogart, Ivy, Alexandra, on and on. I double checked my key too.
What tier are you subscribed to, does that tier allow api access?
Make sure you have loaded an api key for the correct account.
Unfortunately if there are restrictions on your account (region, sub tier, etc.) this app doesn't work around them. So it could be something on your end, but everything seems to be working fine on mine.
But, unfortunately, I encountered an issue when using this app. When I try for the first time, the app is working as intended. But, when I want to try real work on it, I encountered an 401 error. I already tried changing my API keys, checking if my credits on ElevenLabs already depleted (and it's not), uninstalling and reinstalling, but it didn't work. Is there any solution for this?
note: for the screenshot of the error, here's the link (https://imgur.com/a/UQ2WC1m)
It can also be caused by incorrect api key or Elevenlabs placing a rate limit on your account.
There is also a limit on concurrent requests depending on your tier.
Additionally profanity or certain phrases may be blocked by elevenlabs depending on what the dialogue contains.
Are you using batch generation?
But, if I try to directly use ElevenLabs STS from the website on the browser, I still can generate speech-to-speech voices, but I can't batch generate it (well it's tedious to convert ~6000 .mp3 files one by one lol)
UTF-8 Encoded Foreign/Special Character Support
STS batch Generation (can send MP3 or Wav)
Custom TesVedit Script for getting dialogue (more reliably gets filenames)
Batch CSV based file copying based on script notes/Edits information (Made for my mod, included in tool for others who may find it useful)
Option to actually fully stop batch generation (Cancels generation instead of simply pausing it)
Save Last Output Directory
Save Custom STS Hotkey
Searchable Log
Longer Log (Up to 1000 entries)
Option to Save/Load log
still, endorsed.
If you're talking about the API Key it is automatically applied once you click any of the generate buttons.
You need an elevenlabs account to access the Elevenlabs API. Your api key can be found in your Elevenlabs Profile tab.
2) right click on your mods name in the side window and click apply script.
3) select the export dialogue script
4) let the script run and save the text file to an easy to remember place
5) import to google sheets or excel and convert to csv (Default format is a tab delimited txt file)
6) Place filename in first column
7) place response text in second column
(You can delete any other columns they don't matter)
8) Save as csv file