Kokoro-82M: 고성능 TTS(텍스트 음성 변환) 모델 탐색
Kokoro-82M은 고음질 오디오 재생이 가능한 고성능 TTS 모델입니다. 간단한 텍스트-음성 변환을 지원하며 오디오 파일에 가중치를 적용하여 음성 합성을 쉽게 수행할 수 있습니다.
껴안는 얼굴의 코코로-82M
Kokoro-82M 버전 0.23부터 일본어도 지원합니다. 다음 링크를 통해 쉽게 시험해 볼 수 있습니다:
[Hugging Face Spaces의 Kokoro TTS](Hugging Face Spaces 링크가 여기에 삽입되어야 함)
그러나 일본어 억양은 아직 조금 부자연스럽습니다.
이 튜토리얼에서는 Kokoro와 ONNX 런타임을 활용하는 TTS 구현인 kokoro-onnx를 사용합니다. 우리는 미국 영어와 영국 영어의 음성 합성만 지원하는 버전 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>
다음으로 여성 목소리 2명과 남성 목소리 1명의 조합을 합성해 보겠습니다.
<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와 결합하면 흥미로운 실험으로 이어질 수 있습니다.
이 수정된 출력은 흐름과 명확성을 향상시키면서 중복을 피하기 위해 요약되었습니다. "[Hugging Face는 여기에 삽입되어야 합니다. 스페이스 링크]' 및 '(Gradio 데모의 링크 또는 스크린샷이 여기에 삽입되어야 함)'를 실제 링크나 이미지로 대체합니다.
위 내용은 T4와 함께 Google Colab에서 Kokoro TTS 음성 합성 탐색의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!