Web Analytics

ZipVoice

⭐ 748 stars Thai by k2-fsa

🌐 ภาษา

ZipVoice⚡

ระบบแปลงข้อความเป็นเสียงคุณภาพสูงและรวดเร็วแบบ Zero-Shot ด้วย Flow Matching

ภาพรวม

ZipVoice เป็นชุดโมเดล TTS แบบ zero-shot ที่รวดเร็วและคุณภาพสูงโดยใช้ flow matching

1. คุณสมบัติเด่น

2. รุ่นของโมเดล

ชื่อโมเดล คำอธิบาย เอกสารวิจัย เดโม
ZipVoice โมเดลพื้นฐานที่รองรับ TTS zero-shot สำหรับผู้พูดเดี่ยวในภาษาจีนและอังกฤษ
ZipVoice-Distill เวอร์ชันกลั่นของ ZipVoice ที่เพิ่มความเร็วโดยลดความเสื่อมของประสิทธิภาพให้น้อยที่สุด
ZipVoice-Dialog โมเดลสร้างบทสนทนาที่พัฒนาบน ZipVoice สามารถสร้างบทสนทนาแบบสองฝ่ายในช่องเสียงเดียว
ZipVoice-Dialog-Stereo รูปแบบสเตอริโอของ ZipVoice-Dialog ที่รองรับการสร้างบทสนทนาแบบสองช่อง โดยแต่ละผู้พูดจะอยู่ในช่องเสียงที่แตกต่างกัน

ข่าวสาร

2025/07/14: ZipVoice-Dialog และ ZipVoice-Dialog-Stereo สองโมเดลสร้างบทสนทนาแบบเสียง ได้เปิดตัวแล้ว arXiv demo page

2025/07/14: ชุดข้อมูล OpenDialog ชุดข้อมูลบทสนทนาเสียงขนาด 6.8k ชั่วโมง ได้เปิดให้ดาวน์โหลดแล้วที่ hf, ms ดูรายละเอียดได้ที่ arXiv

2025/06/16: ZipVoice และ ZipVoice-Distill เปิดตัวแล้ว arXiv demo page

การติดตั้ง

1. โคลนคลังข้อมูล ZipVoice

git clone https://github.com/k2-fsa/ZipVoice.git

2. (ไม่บังคับ) สร้างสภาพแวดล้อมเสมือนของ Python

python3 -m venv zipvoice
source zipvoice/bin/activate

3. ติดตั้งแพ็กเกจที่จำเป็น

pip install -r requirements.txt

4. ติดตั้ง k2 สำหรับการฝึกหรือการอนุมานที่มีประสิทธิภาพ

k2 จำเป็นสำหรับการฝึก และสามารถเพิ่มความเร็วในการอนุมานได้ อย่างไรก็ตาม คุณยังสามารถใช้โหมดอนุมานของ ZipVoice ได้โดยไม่ต้องติดตั้ง k2

หมายเหตุ: โปรดตรวจสอบให้แน่ใจว่าคุณติดตั้ง k2 เวอร์ชันที่ตรงกับเวอร์ชันของ PyTorch และ CUDA ของคุณ ตัวอย่างเช่น หากคุณใช้ 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/

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
#### 1.2 การอนุมานรายการประโยค

python3 -m zipvoice.bin.infer_zipvoice \
    --model-name zipvoice \
    --test-list test.tsv \
    --res-dir results

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
#### 2.2 รูปแบบอินพุต

แต่ละบรรทัดของ test.tsv จะอยู่ในหนึ่งในรูปแบบต่อไปนี้:

(1) รูปแบบพรอมต์รวม ซึ่งไฟล์เสียงและข้อความถอดเสียงของผู้พูดสองคนจะถูกรวมเป็นไฟล์พรอมต์ wav เดียว:

{wav_name}\t{prompt_transcription}\t{prompt_wav}\t{text}

(2) รูปแบบแยกไฟล์บทสนทนา ที่ไฟล์เสียงและข้อความถอดเสียงของผู้พูดสองคนอยู่ในไฟล์แยกกัน:

{wav_name}\t{spk1_prompt_transcription}\t{spk2_prompt_transcription}\t{spk1_prompt_wav}\t{spk2_prompt_wav}\t{text}

3 คำแนะนำเพื่อการใช้งานที่ดียิ่งขึ้น:

#### 3.1 ความยาวของ prompt

แนะนำให้ใช้ไฟล์ prompt wav ที่สั้น (เช่น น้อยกว่า 3 วินาทีสำหรับการสร้างเสียงพูดแบบผู้พูดเดียว น้อยกว่า 10 วินาทีสำหรับการสร้างเสียงพูดแบบสนทนา) เพื่อความเร็วในการประมวลผลที่สูงขึ้น ถ้า prompt ยาวเกินไปจะทำให้ประมวลผลช้าลงและคุณภาพเสียงลดลง

#### 3.2 การเพิ่มประสิทธิภาพความเร็ว

หากความเร็วในการประมวลผลไม่เป็นที่น่าพอใจ สามารถเร่งความเร็วได้ดังนี้:

#### 3.3 การควบคุมหน่วยความจำ

ข้อความที่ให้มาจะถูกแบ่งเป็นส่วน ๆ ตามเครื่องหมายวรรคตอน (สำหรับสร้างเสียงพูดแบบผู้พูดเดียว) หรือสัญลักษณ์เปลี่ยนผู้พูด (สำหรับสร้างเสียงพูดแบบสนทนา) หลังจากนั้นจะประมวลผลเป็น batch ดังนั้นโมเดลสามารถประมวลผลข้อความที่ยาวได้โดยใช้หน่วยความจำคงที่ สามารถควบคุมการใช้หน่วยความจำด้วยการปรับค่าพารามิเตอร์ --max-duration

#### 3.4 การประเมิน "Raw"

โดยค่าเริ่มต้น ระบบจะ preprocess อินพุต (prompt wav, prompt transcription และ text) เพื่อการประมวลผลที่มีประสิทธิภาพและประสิทธิผลที่ดีขึ้น หากต้องการประเมินผลแบบ "raw" โดยใช้ข้อมูลที่ป้อนเข้ามาโดยตรง (เช่น เพื่อทำซ้ำผลลัพธ์ในงานวิจัย) สามารถตั้งค่า --raw-evaluation True

#### 3.5 ข้อความสั้น

เมื่อสร้างเสียงสำหรับข้อความที่สั้นมาก (เช่น หนึ่งหรือสองคำ) อาจเกิดปัญหาเสียงที่สร้างขึ้นขาดบางเสียงออกไป สามารถแก้ไขได้โดยตั้งค่า --speed 0.3 (0.3 เป็นค่าที่ปรับได้) เพื่อขยายระยะเวลาของเสียงที่สร้างขึ้น

#### 3.6 การแก้ไขการออกเสียงผิดของตัวอักษรจีนพ้องเสียง

เราใช้ pypinyin เพื่อแปลงอักษรจีนเป็นพินอิน อย่างไรก็ตาม บางครั้งอาจออกเสียง อักษรหลายเสียง (多音字) ผิดได้

หากต้องการแก้ไขการออกเสียงที่ผิดเอง ให้ใส่ พินอินที่ถูกต้อง ไว้ในเครื่องหมายมุมเหลี่ยม < > และรวม สัญลักษณ์วรรณยุกต์ ด้วย

ตัวอย่าง:

> หมายเหตุ: หากต้องการกำหนดพินอินหลายตัวเอง ให้ใส่แต่ละพินอินไว้ใน <> เช่น 这把十公分

#### 3.7 ลบช่วงเงียบยาวออกจากเสียงที่สร้าง

โมเดลจะกำหนดตำแหน่งและความยาวของช่วงเงียบในเสียงที่สร้างโดยอัตโนมัติ บางครั้งอาจมีช่วงเงียบยาวตรงกลางเสียง หากไม่ต้องการ ให้ใช้ --remove-long-sil เพื่อลบช่วงเงียบยาวตรงกลางเสียงที่สร้าง (ช่วงเงียบที่ขอบจะถูกลบโดยค่าเริ่มต้น)

#### 3.8 การดาวน์โหลดโมเดล

หากมีปัญหาในการเชื่อมต่อกับ HuggingFace ขณะดาวน์โหลดโมเดลที่ฝึกมาแล้ว ให้ลองเปลี่ยน endpoint เป็นเว็บไซต์มิเรอร์: export HF_ENDPOINT=https://hf-mirror.com

ฝึกโมเดลของคุณเอง

ดูที่ไดเรกทอรี egs สำหรับตัวอย่างการฝึก, ปรับแต่ง และประเมินผล

การปรับใช้ในงานจริง

NVIDIA Triton GPU Runtime

สำหรับการปรับใช้ในงานจริงที่มีประสิทธิภาพสูงและรองรับการขยายระบบ ดู Triton Inference Server integration ซึ่งมี TensorRT engine ที่ปรับแต่งแล้ว รองรับการจัดการคำขอพร้อมกัน และมีทั้ง gRPC/HTTP API สำหรับองค์กร

การปรับใช้บน CPU

ดู sherpa-onnx สำหรับโซลูชันการปรับใช้ C++ บน CPU

การพูดคุย & การสื่อสาร

คุณสามารถพูดคุยโดยตรงที่ Github Issues

คุณยังสามารถสแกน QR code เพื่อเข้าร่วมกลุ่ม wechat ของเรา หรือกดติดตามบัญชีทางการ wechat ของเราได้

| กลุ่ม Wechat | บัญชีทางการ Wechat | | ------------ | ----------------------- | |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 ---