Skip to content

Instantly share code, notes, and snippets.

@thuydao
Created December 6, 2024 05:52
Show Gist options
  • Save thuydao/87143b244cf57d3b0b6887cd4dc91426 to your computer and use it in GitHub Desktop.
Save thuydao/87143b244cf57d3b0b6887cd4dc91426 to your computer and use it in GitHub Desktop.
train_tts

Hướng Dẫn Tạo Giọng Nói Mới (Custom TTS)

1. Chuẩn Bị Tập Dữ Liệu Huấn Luyện

Yêu Cầu:

  • Nguồn âm thanh:
    • File âm thanh (có giọng nói rõ ràng, không nhiễu).
    • Độ dài: Tối thiểu 30-60 phút (càng dài càng tốt).
    • Định dạng: .wav với tần số mẫu 16kHz hoặc 22.05kHz.
  • Transcript:
    • Nội dung văn bản tương ứng với file âm thanh.
    • Lưu dưới dạng .txt hoặc .csv.

Cấu trúc thư mục dữ liệu huấn luyện:

/dataset/
  - audio1.wav
  - audio1.txt
  - audio2.wav
  - audio2.txt
  - metadata.csv  # File tổng hợp thông tin

File metadata.csv ví dụ:

audio1.wav|Xin chào, đây là giọng nói tùy chỉnh.
audio2.wav|Đây là ví dụ thứ hai.

2. Sử Dụng Framework TTS

A. Coqui TTS

Coqui TTS là mã nguồn mở, dễ sử dụng.

1. Cài đặt Coqui TTS:

pip install TTS

2. Tạo file cấu hình huấn luyện (config.json):

{
  "output_path": "output/",
  "audio": {
    "sample_rate": 22050
  },
  "dataset": {
    "path": "dataset/",
    "meta_file": "metadata.csv"
  },
  "model": {
    "type": "tacotron2"
  }
}

3. Huấn luyện mô hình:

tts --train_config_file config.json

4. Sử dụng mô hình đã huấn luyện để tạo giọng nói:

from TTS.api import TTS

# Load mô hình
tts = TTS(model_path="output/best_model.pth")

# Tạo giọng nói từ văn bản
tts.tts_to_file("Xin chào, đây là giọng nói mới của bạn.", "custom_voice.wav")

B. Mozilla TTS

Mozilla TTS cung cấp công cụ tương tự với các bước như sau:

1. Clone mã nguồn và cài đặt:

git clone https://github.com/mozilla/TTS.git
cd TTS
pip install -r requirements.txt

2. Chuẩn bị file metadata.csv giống như trên.

3. Huấn luyện mô hình:

python TTS/bin/train.py --config_path /path/to/config.json

4. Tạo giọng nói từ mô hình huấn luyện:

python TTS/bin/synthesize.py --text "Xin chào thế giới!" --model_path path/to/model.pth

3. Sử Dụng Nền Tảng TTS Thương Mại

Google Custom Voice

  • Dùng Google Cloud TTS để tạo giọng nói tùy chỉnh.
  • Upload dữ liệu âm thanh và transcript lên Google Cloud.

Microsoft Azure Custom Neural Voice

  • Sử dụng Custom Neural Voice trong Azure để tạo giọng nói.
  • Quá trình tương tự như Google Cloud.

4. Tích Hợp TTS vào Hệ Thống

Sử dụng mô hình đã huấn luyện để tạo giọng nói:

Với Coqui TTS:

from TTS.api import TTS

# Load mô hình
tts = TTS(model_path="output/best_model.pth")

# Tạo giọng nói
tts.tts_to_file("Xin chào, đây là nội dung của bạn.", "output.wav")

Với gTTS (Đơn giản hơn):

from gtts import gTTS

# Văn bản cần chuyển
text = "Xin chào, đây là nội dung của bạn."

# Tạo giọng nói
tts = gTTS(text, lang='vi')
tts.save("output.mp3")

5. Full Script Python

Chuẩn bị và chạy toàn bộ quy trình:

import whisper
from TTS.api import TTS
from gtts import gTTS
import openai

# 1. Chuyển đổi âm thanh sang văn bản bằng Whisper
model = whisper.load_model("base")
result = model.transcribe("your_audio_file.wav")
text_from_audio = result['text']
print("Text from audio:", text_from_audio)

# 2. Sử dụng GPT để tạo văn bản mới (tùy chọn)
openai.api_key = "your_openai_api_key"
response = openai.Completion.create(
    engine="text-davinci-003",
    prompt="Hãy tạo một đoạn văn bản để đọc thành giọng nói bằng tiếng Việt.",
    max_tokens=100
)
generated_text = response.choices[0].text.strip()
print("Generated text:", generated_text)

# 3. Chuyển văn bản thành giọng nói bằng Coqui TTS
tts = TTS(model_name="tts_models/en/ljspeech/tacotron2-DCA", progress_bar=False)
tts.tts_to_file(text=generated_text, file_path="final_output_voice.wav")
print("Giọng nói từ GPT được lưu tại: final_output_voice.wav")

# 4. Chuyển văn bản thành giọng nói bằng gTTS (tùy chọn)
tts_gtts = gTTS(generated_text, lang='vi')
tts_gtts.save("final_output_gtts.mp3")
print("Giọng nói từ gTTS được lưu tại: final_output_gtts.mp3")

Kết Luận

  • Bạn có thể sử dụng các framework mã nguồn mở như Coqui TTS hoặc Mozilla TTS để tạo giọng nói mới.
  • Dữ liệu huấn luyện chất lượng cao là yếu tố quan trọng để đạt được kết quả tốt.
  • Nếu cần tích hợp nhanh, bạn có thể sử dụng các dịch vụ TTS thương mại như Google Cloud hoặc Microsoft Azure.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment