Qwen3-TTS एकीकरण
उच्च-गुणवत्ता बहुभाषी टेक्स्ट-टू-स्पीच के लिए Alibaba का Qwen3-TTS स्थानीय रूप से चलाएँ। यह मार्गदर्शिका Libre WebUI में शामिल OpenAI-संगत TTS सर्वर का सेटअप बताती है।
अवलोकन
Qwen3-TTS उन्नत वाक् संश्लेषण प्रणाली है:
- अंग्रेज़ी, चीनी, जापानी और कोरियाई में 9 तैयार आवाज़ें
- जर्मन, फ़्रेंच, स्पेनिश, इतालवी, पुर्तगाली और रूसी सहित 10 भाषाएँ
- 3 सेकंड की ऑडियो से आवाज़ क्लोनिंग
- प्राकृतिक भाषा वर्णन से आवाज़ डिज़ाइन
- भावना और लय के लिए निर्देश नियंत्रण
शामिल सर्वर Qwen3-TTS को OpenAI-संगत API देता है, जिससे Libre WebUI इसे मानक प्लगइन प्रणाली द्वारा उपयोग करता है।
आवश्यकताएँ
| घटक | न्यूनतम | अनुशंसित |
|---|---|---|
| Python | 3.12+ | 3.12 (3.14 नहीं) |
| GPU VRAM | 4GB (0.6B मॉडल) | 8GB+ (1.7B मॉडल) |
| RAM | 8GB | 16GB+ |
| डिस्क | 5GB | 10GB |
प्लेटफ़ॉर्म समर्थन
| प्लेटफ़ॉर्म | बैकएंड | टिप्पणी |
|---|---|---|
| NVIDIA GPU | CUDA | सर्वोत्तम प्रदर्शन, bfloat16 समर्थन |
| Apple Silicon | MPS | स्मृति दक्षता के लिए 0.6B |
| CPU | PyTorch | धीमा; 0.6B उपयोग करें |
Mac पर स्मृति दबाव घटाने के लिए customvoice-0.6b उपयोग करें। 16GB संयुक्त स्मृति वाले सिस्टम पर 1.7B मॉडल अस्थिरता ला सकते हैं।
त्वरित शुरुआत
1. सर्वर स्थापित करें
cd examples/qwen-tts-server
# Create virtual environment (Python 3.12 required)
python3.12 -m venv venv
source venv/bin/activate # Linux/macOS
# or: venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txt
2. सर्वर शुरू करें
# NVIDIA GPU (recommended)
python server.py --model customvoice-1.7b
# Apple Silicon
python server.py --model customvoice-0.6b
# CPU (slower)
python server.py --model customvoice-0.6b
सर्वर डिफ़ॉल्ट रूप से http://localhost:8100 पर चलता है।
3. Libre WebUI कॉन्फ़िगर करें
प्लगइन plugins/qwen-tts.json में पहले से कॉन्फ़िगर है। Settings → Plugins → Qwen3 TTS में सक्षम करें।
4. जाँच करें
curl http://localhost:8100/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{"model": "qwen3-tts", "input": "Hello, welcome to Libre WebUI!", "voice": "Ryan"}' \
--output speech.wav
उपलब्ध मॉडल
| मॉडल | आकार | उपयोग |
|---|---|---|
customvoice-1.7b | ~3.5GB | निर्देश-नियंत्रित तैयार आवाज़ें |
customvoice-0.6b | ~1.5GB | सीमित VRAM के लिए हल्का |
voicedesign-1.7b | ~3.5GB | टेक्स्ट वर्णन से आवाज़ |
base-1.7b | ~3.5GB | 3 सेकंड से आवाज़ क्लोन |
base-0.6b | ~1.5GB | हल्की क्लोनिंग |
आवाज़ें
तैयार आवाज़ें (CustomVoice मॉडल)
| आवाज़ | भाषा | वर्णन |
|---|---|---|
| Ryan | अंग्रेज़ी | पुरुष, स्पष्ट और प्राकृतिक |
| Aiden | अंग्रेज़ी | पुरुष, गर्म स्वर |
| Vivian | चीनी | महिला, पेशेवर |
| Serena | चीनी | महिला, मित्रवत |
| Uncle_Fu | चीनी | पुरुष, परिपक्व |
| Dylan | चीनी | पुरुष, बीजिंग बोली |
| Eric | चीनी | पुरुष, सिचुआन बोली |
| Ono_Anna | जापानी | महिला |
| Sohee | कोरियाई | महिला |
OpenAI आवाज़ उपनाम
OpenAI TTS क्लाइंट संगतता के लिए सर्वर नाम मिलाता है:
| OpenAI आवाज़ | मिलान |
|---|---|
alloy | Ryan |
echo | Aiden |
fable | Vivian |
onyx | Uncle_Fu |
nova | Serena |
shimmer | Ono_Anna |
API संदर्भ
वाक् जनरेशन
एंडपॉइंट: POST /v1/audio/speech
{
"model": "qwen3-tts",
"input": "Text to convert to speech",
"voice": "Ryan",
"response_format": "wav",
"instruct": "Speak with enthusiasm",
"language": "English"
}
| पैरामीटर | प्रकार | डिफ़ॉल्ट | वर्णन |
|---|---|---|---|
model | string | qwen3-tts | मॉडल पहचान |
input | string | आवश्यक | संश्लेषित टेक्स्ट (अधिकतम 10,000 अक्षर) |
voice | string | ryan | आवाज़ नाम |
response_format | string | wav | ऑडियो फ़ॉर्मैट (केवल wav) |
instruct | string | "" | भावना/लय निर्देश |
language | string | स्वतः | भाषा पहचान ओवरराइड |
उत्तर: ऑडियो फ़ाइल (audio/wav)
आवाज़ डिज़ाइन
एंडपॉइंट: POST /v1/audio/voice-design
प्राकृतिक भाषा वर्णन से विशेष आवाज़ बनाएँ।
{
"model": "qwen3-tts-voicedesign",
"input": "Welcome to our service.",
"voice_description": "A warm, friendly female voice with a slight British accent",
"language": "English"
}
voicedesign-1.7b लोड होना चाहिए।
आवाज़ क्लोनिंग
एंडपॉइंट: POST /v1/audio/voice-clone
कम से कम 3 सेकंड की ऑडियो से आवाज़ क्लोन करें।
curl -X POST http://localhost:8100/v1/audio/voice-clone \
-F "input=Hello, this is my cloned voice." \
-F "reference_audio=@reference.wav" \
-F "reference_text=This is what was said in the reference." \
--output cloned.wav
| पैरामीटर | प्रकार | वर्णन |
|---|---|---|
input | string | संश्लेषित टेक्स्ट |
reference_audio | file | कम से कम 3 सेकंड का नमूना |
reference_text | string | संदर्भ ऑडियो प्रतिलेख |
base-1.7b या base-0.6b लोड होना चाहिए।
आवाज़ सूची
एंडपॉइंट: GET /v1/voices
{
"voices": [
{"id": "ryan", "name": "Ryan", "language": "English"},
{"id": "aiden", "name": "Aiden", "language": "English"},
...
]
}
स्थिति जाँच
एंडपॉइंट: GET /health
{ "status": "healthy", "model_loaded": true }
सर्वर कॉन्फ़िगरेशन
python server.py [OPTIONS]
| विकल्प | डिफ़ॉल्ट | वर्णन |
|---|---|---|
--host | 0.0.0.0 | होस्ट |
--port | 8100 | पोर्ट |
--model | customvoice-1.7b | लोड मॉडल |
नेटवर्क पहुँच
दूसरे कंप्यूटर से पहुँचने के लिए:
# Start server on all interfaces
python server.py --host 0.0.0.0 --port 8100
# Access from another machine
curl http://192.168.1.100:8100/v1/audio/speech ...
plugins/qwen-tts.json एंडपॉइंट बदलें:
{
"endpoint": "http://192.168.1.100:8100/v1/audio/speech",
"capabilities": {
"tts": {
"endpoint": "http://192.168.1.100:8100/v1/audio/speech"
}
}
}
उत्पादन सुविधाएँ
टेक्स्ट सफ़ाई
सर्वर मॉडल रुकने से बचाने के लिए टेक्स्ट साफ़ करता है:
- इमोजी और प्रतीक हटाता है
- Markdown (
*bold*,_italic_आदि) हटाता है - दोहराव घटाता है (
FUUUUU→FUU) - मंच निर्देश हटाता है (
*(action)*,(whispers)) - रिक्त स्थान सामान्य करता है
टेक्स्ट विभाजन
लंबा टेक्स्ट वाक्य सीमाओं पर बँटता है:
- प्रति भाग 500 अक्षर
- प्रति भाग 30 सेकंड समय-सीमा
- विफल भाग छोड़कर शेष जारी
- भाग एक ऑडियो उत्तर में जुड़ते हैं
इससे प्राकृतिक प्रवाह रखते हुए लंबे AI उत्तर समय-सीमा से बचते हैं।
अनेक GPU
कई GPU पर टेन्सर डिवाइस असंगति रोकने के लिए सर्वर एक GPU बाध्य करता है:
device_map = {"": "cuda:0"} # Uses first GPU only
विशिष्ट GPU के लिए:
CUDA_VISIBLE_DEVICES=1 python server.py --model customvoice-1.7b
समस्या निवारण
मॉडल डाउनलोड विफल
पहली बार मॉडल Hugging Face से उतरता है। विफल हो तो:
# Set Hugging Face token for gated models
export HF_TOKEN=hf_...
# Or download manually
huggingface-cli download Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice
स्मृति कम (Apple Silicon)
RuntimeError: MPS backend out of memory
छोटा मॉडल उपयोग करें:
python server.py --model customvoice-0.6b
CUDA स्मृति कम
torch.cuda.OutOfMemoryError: CUDA out of memory
- अन्य GPU ऐप बंद करें
- 0.6B मॉडल उपयोग करें
- server.py में भाग आकार घटाएँ (
max_chunk_size=300)
सर्वर समय-सीमा पार करता है
लंबा टेक्स्ट समय-सीमा पार करे तो:
- सर्वर स्वतः विभाजित कर शेष जारी रखता है
- लॉग देखें
- इनपुट छोटा करें
ऑडियो गलत लगता है
- दोहराए अक्षर: आमतौर पर इमोजी या विशेष चिह्न; सफ़ाई सँभालती है।
- गलत भाषा:
languageस्पष्ट सेट करें। - अप्राकृतिक विराम: असामान्य विराम चिह्न जाँचें।
प्लगइन कॉन्फ़िगरेशन
शामिल प्लगइन (plugins/qwen-tts.json):
{
"id": "qwen-tts",
"name": "Qwen3 TTS",
"type": "tts",
"endpoint": "http://localhost:8100/v1/audio/speech",
"auth": {
"header": "",
"key_env": ""
},
"model_map": [
"qwen3-tts",
"qwen3-tts-customvoice",
"qwen3-tts-voicedesign",
"qwen3-tts-clone"
],
"capabilities": {
"tts": {
"endpoint": "http://localhost:8100/v1/audio/speech",
"model_map": [
"qwen3-tts",
"qwen3-tts-customvoice",
"qwen3-tts-voicedesign",
"qwen3-tts-clone"
],
"config": {
"voices": [
"Ryan",
"Aiden",
"Vivian",
"Serena",
"Uncle_Fu",
"Dylan",
"Eric",
"Ono_Anna",
"Sohee"
],
"default_voice": "Ryan",
"formats": ["wav"],
"default_format": "wav",
"max_characters": 10000,
"supports_streaming": false,
"no_auth_required": true
}
}
},
"description": "Qwen3-TTS local TTS server (NVIDIA CUDA, Apple MPS, or CPU)",
"documentation_url": "https://github.com/QwenLM/Qwen3-TTS"
}
संसाधन
- Qwen3-TTS GitHub - आधिकारिक रिपॉज़िटरी
- Qwen3-TTS प्रदर्शन - ऑनलाइन आज़माएँ
- Alibaba Cloud TTS दस्तावेज़ - क्लाउड API दस्तावेज़