236 lines
7.0 KiB
Markdown
236 lines
7.0 KiB
Markdown
# Tutorial Video Script: TTS Voice Creator + Qwen3-TTS
|
|
|
|
## Video Goal
|
|
|
|
Show the value first, then walk through setup with the guided installer.
|
|
|
|
Target length: 12 to 18 minutes.
|
|
|
|
## Cast
|
|
|
|
- Presenter
|
|
- Screen recording
|
|
- Optional second device or narrow browser window for mobile view
|
|
|
|
## Scene 1: Hook
|
|
|
|
**Visual:** Open TTS Voice Creator on the Voice Clone tab.
|
|
|
|
**Presenter:**
|
|
|
|
Today I am going to show a complete local TTS workflow: record a voice, save it as a Qwen3-TTS voice, route Open WebUI's `default` voice by language, and install the whole stack with a guided installer instead of command-line guesswork.
|
|
|
|
By the end, Open WebUI can say English text with one voice and German text with another, while Open WebUI itself only asks for `default`.
|
|
|
|
## Scene 2: Feature Overview
|
|
|
|
**Visual:** Click through the main tabs.
|
|
|
|
**Presenter:**
|
|
|
|
The app has four main areas.
|
|
|
|
Voice Clone is where you record or import voice samples. You can trim them, normalize loudness, transcribe the reference text, and save them as active voices.
|
|
|
|
Voice Design is for creating voices from written descriptions. This is useful when you do not have a recording yet.
|
|
|
|
Routing lets an external app send a simple voice name like `default`, and this app maps that to the right output voice by app and language.
|
|
|
|
Use in apps gives copyable setup examples for Open WebUI, SillyTavern, Home Assistant, and curl.
|
|
|
|
## Scene 3: Record A Voice
|
|
|
|
**Visual:** Voice Clone, Add new voice.
|
|
|
|
**Presenter:**
|
|
|
|
Let us start with recording. I click Add new voice. On the right, I have the microphone recorder.
|
|
|
|
First I choose the read-sample language. The sample text changes automatically, and I can edit it if I want. It is saved per language.
|
|
|
|
Before recording, I click Check level. Now the input meter is live. I adjust mic gain until peaks land around minus eighteen to minus nine dB and never hit red.
|
|
|
|
Now I record the sample, stop, and the waveform appears.
|
|
|
|
## Scene 4: Trim And Save
|
|
|
|
**Visual:** Use waveform, Auto trim, transcript, save fields.
|
|
|
|
**Presenter:**
|
|
|
|
The app can auto trim the useful speech area. I can also adjust start and end manually.
|
|
|
|
Next I make sure the transcript matches exactly what was spoken. This matters for voice cloning quality.
|
|
|
|
Then I choose language, gender, and a voice ID. When I save, the app writes the WAV and the reference transcript into the active voices folder.
|
|
|
|
After adding voices, restart the Qwen3-TTS clone container so it rescans active voices.
|
|
|
|
## Scene 5: Routing Demo
|
|
|
|
**Visual:** Routing tab.
|
|
|
|
**Presenter:**
|
|
|
|
Here is the routing system. This is especially helpful for Open WebUI.
|
|
|
|
Instead of teaching Open WebUI every voice, I can let Open WebUI ask for `default`.
|
|
|
|
Then I add rules:
|
|
|
|
Open WebUI, default, English goes to my English voice.
|
|
|
|
Open WebUI, default, German goes to my German voice.
|
|
|
|
Now the creator app receives the TTS request, detects the language, swaps the voice, and forwards the request to Qwen3-TTS.
|
|
|
|
## Scene 6: Open WebUI Setup
|
|
|
|
**Visual:** Use in apps tab, Open WebUI card.
|
|
|
|
**Presenter:**
|
|
|
|
For Open WebUI with routing, use the creator app as the OpenAI-compatible TTS base URL.
|
|
|
|
The base URL is:
|
|
|
|
`http://YOUR_HOST:7860/v1`
|
|
|
|
The model can be `tts-1`.
|
|
|
|
The voice is `default`.
|
|
|
|
Without routing, point Open WebUI directly to Qwen3-TTS:
|
|
|
|
`http://YOUR_HOST:8020/v1`
|
|
|
|
and use a real voice ID.
|
|
|
|
## Scene 7: Mobile View
|
|
|
|
**Visual:** Narrow browser or phone view.
|
|
|
|
**Presenter:**
|
|
|
|
The interface also works on mobile. The voice library becomes card-like, the Add Voice controls stack cleanly, and the recording sample has larger touch-friendly controls.
|
|
|
|
This is useful when you want to fix a route, enable a voice, or check a sample from another device.
|
|
|
|
## Scene 8: Guided Installer Introduction
|
|
|
|
**Visual:** Launch `guided_installer.py`.
|
|
|
|
**Presenter:**
|
|
|
|
Now let us look at setup. The target user does not need to memorize Docker commands.
|
|
|
|
The guided installer checks this computer for Docker, Docker Compose, Portainer, this app, and the Qwen3-TTS services.
|
|
|
|
It explains what each component is for and gives buttons for the common actions.
|
|
|
|
## Scene 9: Installer Basics
|
|
|
|
**Visual:** Installer Basics tab.
|
|
|
|
**Presenter:**
|
|
|
|
On the Basics tab, I choose the voice library folder, the model folder, the app port, the Docker network, and the Qwen TTS image.
|
|
|
|
The voice folder stores the saved reference voices.
|
|
|
|
The model folder stores the large Qwen model files.
|
|
|
|
Portainer is optional, but for non-command-line users it is very helpful.
|
|
|
|
## Scene 10: Qwen Model Choices
|
|
|
|
**Visual:** Installer Qwen Models tab.
|
|
|
|
**Presenter:**
|
|
|
|
There are three Qwen-related servers.
|
|
|
|
Voice Clone is the normal production server for recorded voices. Most people should install this.
|
|
|
|
Voice Design creates voices from text descriptions. Install this if you want prompt-based voices.
|
|
|
|
Custom Voice is for Qwen CustomVoice speaker workflows, where named speakers are configured separately.
|
|
|
|
Each service can have its own model location and port.
|
|
|
|
The recommended ports are 8020 for clone, 8021 for Voice Design, and 8022 for Custom Voice.
|
|
|
|
## Scene 11: Generate And Install
|
|
|
|
**Visual:** Click Generate compose file, then install selected stack.
|
|
|
|
**Presenter:**
|
|
|
|
When the choices look right, I click Generate compose file. This writes a Docker Compose file with the selected services.
|
|
|
|
Then I click Install or update selected stack. The installer creates the Docker network and runs Docker Compose.
|
|
|
|
All output appears in the Log tab, so if something fails, there is a visible error instead of a disappearing terminal window.
|
|
|
|
## Scene 12: Portainer
|
|
|
|
**Visual:** Portainer button and Portainer UI if available.
|
|
|
|
**Presenter:**
|
|
|
|
If Portainer is selected, the installer can install Portainer too. Portainer gives a browser dashboard for container status, logs, restarts, and updates.
|
|
|
|
This is usually the friendliest maintenance screen for someone who does not like command lines.
|
|
|
|
## Scene 13: Final End-To-End Test
|
|
|
|
**Visual:** Open WebUI or curl/audio preview.
|
|
|
|
**Presenter:**
|
|
|
|
Now we test the whole chain.
|
|
|
|
Open WebUI sends text to `http://YOUR_HOST:7860/v1`.
|
|
|
|
The creator app receives `voice: default`.
|
|
|
|
The Routing tab maps that to a real voice based on language.
|
|
|
|
Qwen3-TTS generates the audio.
|
|
|
|
Open WebUI plays it back.
|
|
|
|
## Scene 14: Closing
|
|
|
|
**Presenter:**
|
|
|
|
That is the full workflow: install with a guided setup, record and manage voices in the browser, route simple app voice names to real multilingual voices, and keep everything local through Docker.
|
|
|
|
For advanced users, there is also a CLI, but the main path is now friendly for people who prefer buttons and a browser.
|
|
|
|
## B-Roll Checklist
|
|
|
|
- Voice library with active voices.
|
|
- Add new voice panel.
|
|
- Microphone level meter.
|
|
- Read sample language selector.
|
|
- Waveform trim.
|
|
- Routing tab with `default` rules.
|
|
- Use in apps Open WebUI snippet.
|
|
- Guided installer status check.
|
|
- Installer Qwen model selection.
|
|
- Portainer container list.
|
|
- Mobile/narrow viewport.
|
|
|
|
## Suggested Chapter Titles
|
|
|
|
1. What This Solves
|
|
2. Record A Voice
|
|
3. Save And Activate
|
|
4. Route Open WebUI Voices
|
|
5. Mobile Editing
|
|
6. Guided Installer
|
|
7. Choosing Qwen Models
|
|
8. Open WebUI Setup
|
|
9. Final Test
|