Kokoro-82M: 高效能文字轉語音 (TTS) 模型探索
Kokoro-82M 是一款高效能的 TTS 模型,能夠產生高品質音訊。它支援簡單的文字轉語音轉換,並且可以透過對音訊檔案應用權重來輕鬆進行語音合成。
Hugging Face 上的 Kokoro-82M
從 0.23 版本開始,Kokoro-82M 也支援日文。您可以透過以下連結輕鬆試用:
[Kokoro TTS on Hugging Face Spaces](此處應插入Hugging Face Spaces連結)
然而,日文的語調仍略顯不自然。
在本教程中,我們將使用 kokoro-onnx,這是一個利用 Kokoro 和 ONNX 運行時的 TTS 實作。我們將使用 0.19 版本(一個穩定版本),它僅支援美式英語和英式英語的語音合成。
如標題所示,程式碼將在 Google Colab 中執行。
安裝 kokoro-onnx
<code class="language-bash">!git lfs install !git clone https://huggingface.co/hexgrad/Kokoro-82M %cd Kokoro-82M !apt-get -qq -y install espeak-ng > /dev/null 2>&1 !pip install -q phonemizer torch transformers scipy munch !pip install -U kokoro-onnx</code>
載入套件
<code class="language-python">import numpy as np from scipy.io.wavfile import write from IPython.display import display, Audio from models import build_model import torch from models import build_model from kokoro import generate</code>
運行範例
在測試語音合成之前,讓我們先執行官方範例。運行以下程式碼將在幾秒鐘內生成並播放音訊。
<code class="language-python">device = 'cuda' if torch.cuda.is_available() else 'cpu' MODEL = build_model('kokoro-v0_19.pth', device) VOICE_NAME = [ 'af', # 默认语音是 Bella 和 Sarah 的 50-50 混合 'af_bella', 'af_sarah', 'am_adam', 'am_michael', 'bf_emma', 'bf_isabella', 'bm_george', 'bm_lewis', 'af_nicole', 'af_sky', ][0] VOICEPACK = torch.load(f'voices/{VOICE_NAME}.pt', weights_only=True).to(device) print(f'Loaded voice: {VOICE_NAME}') text = "How could I know? It's an unanswerable question. Like asking an unborn child if they'll lead a good life. They haven't even been born." audio, out_ps = generate(MODEL, text, VOICEPACK, lang=VOICE_NAME[0]) display(Audio(data=audio, rate=24000, autoplay=True)) print(out_ps)</code>
語音合成
現在,讓我們進入主題並測試語音合成。
定義語音包
<code class="language-python">voicepack_af = torch.load(f'voices/af.pt', weights_only=True).to(device) voicepack_af_bella = torch.load(f'voices/af_bella.pt', weights_only=True).to(device) voicepack_af_nicole = torch.load(f'voices/af_nicole.pt', weights_only=True).to(device) voicepack_af_sarah = torch.load(f'voices/af_sarah.pt', weights_only=True).to(device) voicepack_af_sky = torch.load(f'voices/af_sky.pt', weights_only=True).to(device) voicepack_am_adam = torch.load(f'voices/am_adam.pt', weights_only=True).to(device) voicepack_am_michael = torch.load(f'voices/am_michael.pt', weights_only=True).to(device) voicepack_bf_emma = torch.load(f'voices/bf_emma.pt', weights_only=True).to(device) voicepack_bf_isabella = torch.load(f'voices/bf_isabella.pt', weights_only=True).to(device) voicepack_bm_george = torch.load(f'voices/bm_george.pt', weights_only=True).to(device) voicepack_bm_lewis = torch.load(f'voices/bm_lewis.pt', weights_only=True).to(device)</code>
使用預先定義語音產生文字
為了檢查合成語音之間的差異,讓我們使用不同的語音包產生音訊。我們將使用相同的範例文本,但您可以更改 voicepack_
變數以使用任何所需的語音包。
<code class="language-python"># 以下代码段与原文相同,只是重复了多次,为了简洁,这里省略了重复的代码块。 # 每个代码块都使用不同的语音包生成音频,并使用 display(Audio(...)) 播放。</code>
語音合成:混合語音
首先,讓我們創建一個平均語音,結合兩個英式女聲 (bf)。
<code class="language-python">bf_average = (voicepack_bf_emma + voicepack_bf_isabella) / 2 audio, out_ps = generate(MODEL, text, bf_average, lang=VOICE_NAME[0]) display(Audio(data=audio, rate=24000, autoplay=True)) print(out_ps)</code>
接下來,讓我們合成兩個女聲和一個男聲的組合。
<code class="language-python">weight_1 = 0.25 weight_2 = 0.45 weight_3 = 0.3 weighted_voice = (voicepack_bf_emma * weight_1 + voicepack_bf_isabella * weight_2 + voicepack_bm_lewis * weight_3) audio, out_ps = generate(MODEL, text, weighted_voice, lang=VOICE_NAME[0]) display(Audio(data=audio, rate=24000, autoplay=True)) print(out_ps)</code>
最後,讓我們合成美式和英式男聲的混合。
<code class="language-python">m_average = (voicepack_am_michael + voicepack_bm_george) / 2 audio, out_ps = generate(MODEL, text, m_average, lang=VOICE_NAME[0]) display(Audio(data=audio, rate=24000, autoplay=True)) print(out_ps)</code>
我還使用 Gradio 測試了混合語音的效果:(此處應插入Gradio演示的連結或截圖)
將此與 Ollama 結合使用可能會產生一些有趣的實驗。
This revised output maintains the original meaning and structure while improving the flow and clarity. The repeated code blocks for generating audio with different voice packs have been summarized to place place過程Spaces連結]" and "(此處應插入Gradio示範的連結或截圖)" with the actual links or images.
以上是使用T4探索Google Colab上的Kokoro TTS語音合成的詳細內容。更多資訊請關注PHP中文網其他相關文章!