ZipVoice⚡
फ्लो मैचिंग के साथ तेज़ और उच्च गुणवत्ता वाली ज़ीरो-शॉट टेक्स्ट-टू-स्पीच
अवलोकन
ZipVoice एक तेज़ और उच्च-गुणवत्ता वाली ज़ीरो-शॉट TTS मॉडल श्रृंखला है, जो फ्लो मैचिंग पर आधारित है।
1. मुख्य विशेषताएँ
- छोटा और तेज़: केवल 123M पैरामीटर।
- उच्च गुणवत्ता वाली वॉयस क्लोनिंग: वक्ता समानता, स्पष्टता और प्राकृतिकता में अत्याधुनिक प्रदर्शन।
- बहुभाषी: चीनी और अंग्रेज़ी का समर्थन करता है।
- बहु-मोड: एकल वक्ता और संवाद भाषण जनरेशन दोनों का समर्थन करता है।
2. मॉडल वेरिएंट्स
समाचार
2025/07/14: ZipVoice-Dialog और ZipVoice-Dialog-Stereo, दो बोले गए संवाद निर्माण मॉडल जारी किए गए हैं।
2025/07/14: OpenDialog डेटासेट, एक 6.8k-घंटे की बोले गए संवाद डेटासेट, जारी की गई है। डाउनलोड करें ,
। विवरण देखें
.
2025/06/16: ZipVoice और ZipVoice-Distill जारी किए गए हैं।
स्थापना
1. ZipVoice रिपॉजिटरी क्लोन करें
git clone https://github.com/k2-fsa/ZipVoice.git
2. (वैकल्पिक) एक पायथन वर्चुअल एनवायरनमेंट बनाएं
python3 -m venv zipvoice
source zipvoice/bin/activate
3. आवश्यक पैकेज इंस्टॉल करें
pip install -r requirements.txt
4. प्रशिक्षण या कुशल अनुकरण के लिए k2 स्थापित करें
प्रशिक्षण के लिए k2 आवश्यक है और यह अनुकरण को तेज कर सकता है। फिर भी, आप k2 स्थापित किए बिना भी ZipVoice के अनुकरण मोड का उपयोग कर सकते हैं।
नोट: सुनिश्चित करें कि आप अपने PyTorch और CUDA संस्करण के अनुसार k2 का संस्करण स्थापित कर रहे हैं। उदाहरण के लिए, यदि आप pytorch 2.5.1 और CUDA 12.1 उपयोग कर रहे हैं, तो आप इस प्रकार k2 स्थापित कर सकते हैं:
pip install k2==1.24.4.dev20250208+cuda12.1.torch2.5.1 -f https://k2-fsa.github.io/k2/cuda.html
कृपया विवरण के लिए https://k2-fsa.org/get-started/k2/ देखें।
चीन मुख्यभूमि के उपयोगकर्ता https://k2-fsa.org/zh-CN/get-started/k2/ देख सकते हैं।- k2 इंस्टॉलेशन जांचने के लिए:
python3 -c "import k2; print(k2.__file__)"
उपयोग
1. एकल-वक्ता भाषण जनरेशन
हमारे प्री-ट्रेंड ZipVoice या ZipVoice-Distill मॉडल के साथ एकल-वक्ता भाषण जनरेट करने के लिए, निम्नलिखित कमांड्स का उपयोग करें (आवश्यक मॉडल HuggingFace से डाउनलोड किए जाएंगे):
#### 1.1 एकल वाक्य का इनफरेंस
python3 -m zipvoice.bin.infer_zipvoice \
--model-name zipvoice \
--prompt-wav prompt.wav \
--prompt-text "I am the transcription of the prompt wav." \
--text "I am the text to be synthesized." \
--res-wav-path result.wav
--model-nameकोzipvoiceयाzipvoice_distillसेट किया जा सकता है, जो क्रमशः आसवन से पहले और बाद के मॉडल हैं।- यदि पाठ में
<>या[]आते हैं, तो उनके भीतर बंद स्ट्रिंग्स को विशेष टोकन के रूप में माना जाएगा।<>चीनी पिनयिन को दर्शाता है और[]अन्य विशेष टैग को दर्शाता है।
python3 -m zipvoice.bin.infer_zipvoice \
--model-name zipvoice \
--test-list test.tsv \
--res-dir results
test.tsvकी प्रत्येक पंक्ति इस प्रारूप में होती है:{wav_name}\t{prompt_transcription}\t{prompt_wav}\t{text}।
2. संवाद भाषण निर्माण
#### 2.1 पूर्वानुमान कमांड
हमारे प्री-ट्रेंड ZipVoice-Dialogue या ZipVoice-Dialogue-Stereo मॉडल के साथ दो-पक्षीय बोले गए संवाद उत्पन्न करने के लिए, निम्नलिखित कमांड का उपयोग करें (आवश्यक मॉडल HuggingFace से डाउनलोड किए जाएंगे):
python3 -m zipvoice.bin.infer_zipvoice_dialog \
--model-name "zipvoice_dialog" \
--test-list test.tsv \
--res-dir results
--model-nameया तोzipvoice_dialogयाzipvoice_dialog_stereoहो सकता है,
#### 2.2 इनपुट प्रारूप
test.tsv की प्रत्येक पंक्ति निम्नलिखित प्रारूपों में से एक में होती है:
(1) मर्ज्ड प्रॉम्प्ट प्रारूप जिसमें दो वक्ताओं के प्रॉम्प्ट ऑडियो और ट्रांसक्रिप्शन को एक प्रॉम्प्ट वेव फ़ाइल में मर्ज कर दिया जाता है:
{wav_name}\t{prompt_transcription}\t{prompt_wav}\t{text}wav_nameआउटपुट वेव फाइल का नाम है।prompt_transcriptionवार्तालाप संकेत वेव की ट्रांसक्रिप्शन है, उदाहरण के लिए, "[S1] हैलो। [S2] आप कैसे हैं?"prompt_wavसंकेत वेव का पथ है।textवह टेक्स्ट है जिसे सिंथेसाइज़ किया जाना है, जैसे कि "[S1] मैं ठीक हूँ। [S2] आपका नाम क्या है? [S1] मेरा नाम एरिक है। [S2] हाय एरिक।"
{wav_name}\t{spk1_prompt_transcription}\t{spk2_prompt_transcription}\t{spk1_prompt_wav}\t{spk2_prompt_wav}\t{text}
wav_nameआउटपुट wav फ़ाइल का नाम है।spk1_prompt_transcriptionपहले वक्ता के प्रॉम्प्ट wav की ट्रांसक्रिप्शन है, जैसे, "Hello"spk2_prompt_transcriptionदूसरे वक्ता के प्रॉम्प्ट wav की ट्रांसक्रिप्शन है, जैसे, "How are you?"spk1_prompt_wavपहले वक्ता के प्रॉम्प्ट wav फ़ाइल का पथ है।spk2_prompt_wavदूसरे वक्ता के प्रॉम्प्ट wav फ़ाइल का पथ है।textवह पाठ है जिसे सिंथेसाइज़ किया जाना है, जैसे, "[S1] I'm fine. [S2] What's your name? [S1] I'm Eric. [S2] Hi Eric."
3 बेहतर उपयोग के लिए मार्गदर्शन:
#### 3.1 प्रॉम्प्ट की लंबाई
हम एक छोटा प्रॉम्प्ट wav फ़ाइल (जैसे, एकल-वक्ता भाषण निर्माण के लिए 3 सेकंड से कम, संवाद भाषण निर्माण के लिए 10 सेकंड से कम) की सलाह देते हैं ताकि इनफेरेंस गति तेज हो। बहुत लंबा प्रॉम्प्ट इनफेरेंस को धीमा कर देगा और भाषण की गुणवत्ता को घटा सकता है।
#### 3.2 गति अनुकूलन
यदि इनफेरेंस गति असंतोषजनक है, तो आप इसे निम्नलिखित तरीकों से तेज कर सकते हैं:
- डिस्टिल मॉडल और कम स्टेप्स: एकल-वक्ता भाषण निर्माण मॉडल के लिए, हम बेहतर भाषण गुणवत्ता के लिए डिफ़ॉल्ट रूप से
zipvoiceमॉडल का उपयोग करते हैं। यदि तेज गति प्राथमिकता है, तो आपzipvoice_distillपर स्विच कर सकते हैं और--num-stepsको न्यूनतम4(डिफ़ॉल्ट 8) तक कम कर सकते हैं। - CPU मल्टी-थ्रेडिंग के साथ गति बढ़ाना: यदि आप CPU पर चला रहे हैं, तो आप तेज गति के लिए
--num-threadपैरामीटर (जैसे,--num-thread 4) दे सकते हैं ताकि थ्रेड्स की संख्या बढ़ाई जा सके। डिफ़ॉल्ट रूप से हम 1 थ्रेड का उपयोग करते हैं। - CPU पर ONNX के साथ गति बढ़ाना: CPU पर चलते समय, आप तेज गति के लिए ONNX मॉडल का उपयोग कर सकते हैं
zipvoice.bin.infer_zipvoice_onnxके साथ (संवाद निर्माण मॉडल के लिए ONNX का समर्थन नहीं है)। और भी तेज गति के लिए, आप--onnx-int8 Trueसेट कर सकते हैं ताकि INT8-क्वांटाइज़्ड ONNX मॉडल का उपयोग किया जा सके। ध्यान दें कि क्वांटाइज़्ड मॉडल से भाषण गुणवत्ता में कुछ गिरावट आ सकती है। GPU पर ONNX का उपयोग न करें, क्योंकि GPU पर यह PyTorch से धीमा है। - NVIDIA TensorRT के साथ GPU एक्सेलेरेशन: NVIDIA GPU पर महत्वपूर्ण प्रदर्शन बढ़ाने के लिए, पहले zipvoice.bin.tensorrt_export के साथ मॉडल को TensorRT इंजन में एक्सपोर्ट करें। फिर, अपने डेटासेट (जैसे, Hugging Face डेटासेट) पर zipvoice.bin.infer_zipvoice के साथ इनफेरेंस चलाएँ। यह GPU पर स्टैंडर्ड PyTorch इम्प्लीमेंटेशन की तुलना में लगभग 2x थ्रूपुट प्राप्त कर सकता है।
दिया गया टेक्स्ट विराम चिह्न (एकल-वक्ता भाषण निर्माण के लिए) या वक्ता-टर्न चिन्ह (संवाद भाषण निर्माण के लिए) के आधार पर भागों में विभाजित किया जाएगा। इसके बाद, इन भागों को बैच में प्रोसेस किया जाएगा। इस प्रकार, मॉडल लगभग स्थिर मेमोरी उपयोग के साथ किसी भी लंबाई का टेक्स्ट प्रोसेस कर सकता है। आप --max-duration पैरामीटर को समायोजित करके मेमोरी उपयोग को नियंत्रित कर सकते हैं।
#### 3.4 "रॉ" मूल्यांकन
डिफ़ॉल्ट रूप से, हम इनपुट्स (प्रॉम्प्ट wav, प्रॉम्प्ट ट्रांसक्रिप्शन, और टेक्स्ट) को कुशल इनफेरेंस और बेहतर प्रदर्शन के लिए पूर्व-प्रक्रिया करते हैं। यदि आप मॉडल के "रॉ" प्रदर्शन का मूल्यांकन करना चाहते हैं, जैसे कि हमारे पेपर में दिए गए परिणामों को पुनः उत्पन्न करने के लिए, तो आप --raw-evaluation True पास कर सकते हैं।
#### 3.5 छोटा टेक्स्ट
बहुत छोटे टेक्स्ट (जैसे, एक या दो शब्द) के लिए भाषण जेनरेट करते समय, कभी-कभी कुछ उच्चारण छूट सकते हैं। इस समस्या के समाधान के लिए, आप --speed 0.3 (जहाँ 0.3 एक समायोज्य मान है) पास कर सकते हैं ताकि जेनरेटेड भाषण की अवधि बढ़ाई जा सके।
#### 3.6 गलत उच्चारित चीनी बहुवर्णी अक्षरों को सुधारना
हम pypinyin का उपयोग चीनी अक्षरों को पिनयिन में बदलने के लिए करते हैं। हालांकि, यह कभी-कभी बहु-ध्वनि अक्षरों (多音字) का उच्चारण गलत कर सकता है।
इन उच्चारणों को मैन्युअली ठीक करने के लिए, सुधारा गया पिनयिन कोण ब्रैकेट < > में लिखें और स्वर चिन्ह शामिल करें।
उदाहरण:
- मूल पाठ:
这把剑长三十公分 长के पिनयिन को ठीक करें:这把剑三十公分
<> में लिखें, जैसे: 这把十公分 #### 3.7 उत्पन्न ध्वनि से लंबी खामोशी हटाएँ
मॉडल स्वतः ही उत्पन्न ध्वनि में खामोशी के स्थान और अवधि का निर्धारण करेगा। कभी-कभी यह बोलने के बीच में लंबी खामोशी रखता है। यदि आप ऐसा नहीं चाहते हैं, तो आप --remove-long-sil पास कर सकते हैं ताकि उत्पन्न ध्वनि के बीच की लंबी खामोशी हट जाए (किनारे की खामोशी स्वतः हट जाएगी)।
#### 3.8 मॉडल डाउनलोडिंग
यदि आपको प्री-ट्रेंड मॉडल डाउनलोड करते समय HuggingFace से कनेक्ट होने में समस्या आ रही है, तो एंडपॉइंट को मिरर साइट पर बदलने का प्रयास करें: export HF_ENDPOINT=https://hf-mirror.com.
अपना खुद का मॉडल ट्रेन करें
ट्रेनिंग, फाइन-ट्यूनिंग और मूल्यांकन उदाहरणों के लिए egs डायरेक्टरी देखें।
प्रोडक्शन डिप्लॉयमेंट
NVIDIA Triton GPU रनटाइम
उच्च प्रदर्शन और स्केलेबिलिटी के साथ प्रोडक्शन-तैयार डिप्लॉयमेंट के लिए Triton Inference Server integration देखें, जो ऑप्टिमाइज़्ड TensorRT इंजन, एक साथ अनुरोध हैंडलिंग, और एंटरप्राइज के लिए gRPC/HTTP APIs प्रदान करता है।
CPU डिप्लॉयमेंट
CPU पर C++ डिप्लॉयमेंट समाधान के लिए sherpa-onnx देखें।
चर्चा एवं संवाद
आप सीधे Github Issues पर चर्चा कर सकते हैं।
आप हमारा Wechat ग्रुप जॉइन करने या हमारे Wechat आधिकारिक अकाउंट को फॉलो करने के लिए QR कोड भी स्कैन कर सकते हैं।
| Wechat ग्रुप | Wechat आधिकारिक अकाउंट |
| ------------ | ----------------------- |
|
|
|
संदर्भ
@article{zhu2025zipvoice,
title={ZipVoice: Fast and High-Quality Zero-Shot Text-to-Speech with Flow Matching},
author={Zhu, Han and Kang, Wei and Yao, Zengwei and Guo, Liyong and Kuang, Fangjun and Li, Zhaoqing and Zhuang, Weiji and Lin, Long and Povey, Daniel},
journal={arXiv preprint arXiv:2506.13053},
year={2025}
}@article{zhu2025zipvoicedialog,
title={ZipVoice-Dialog: Non-Autoregressive Spoken Dialogue Generation with Flow Matching},
author={Zhu, Han and Kang, Wei and Guo, Liyong and Yao, Zengwei and Kuang, Fangjun and Zhuang, Weiji and Li, Zhaoqing and Han, Zhifeng and Zhang, Dong and Zhang, Xin and Song, Xingchen and Lin, Long and Povey, Daniel},
journal={arXiv preprint arXiv:2507.09318},
year={2025}
}
--- Tranlated By Open Ai Tx | Last indexed: 2025-12-30 ---