文章信息

基于本地Kokoro-82M模型的文字转语音

发布时间:『 2025-03-21 08:04』  文章类别:技术开发  阅读(169) 评论(0)

Kokoro-82M是一个8200万参数语音合成(TTS)模型,尽管其参数量较小,但它能够在多种语言之间切换,并提供高质量的语音输出。该模型支持英语、法语、日语、韩语和中文等多种语言,且采用Apache 2.0许可证发布,允许商业用途。

我们首先在huggingface.co下载v1.1的中文模型到本地。

git lfs clone https://huggingface.co/hexgrad/Kokoro-82M-v1.1-zh

基于此模型需要下载相关依赖:

pip install -q kokoro>=0.8.2 "misaki[zh]>=0.8.2" soundfile pydub

接下来开始写一个示例代码咯。

import os
import io
import torch
import soundfile as sf
from pydub import AudioSegment
from kokoro import KModel, KPipeline

device = 'cuda:0' if torch.cuda.is_available() else 'cpu'

model_base = '/opt/model/Kokoro-82M-v1.1-zh'
CONFIG_PATH = f'{model_base}/config.json'
MODEL_PATH = f'{model_base}/kokoro-v1_1-zh.pth'

model = KModel(config=CONFIG_PATH, model=MODEL_PATH, repo_id="hexgrad/Kokoro-82M-v1.1-zh").to(device).eval()

# 支持英语发音
en_pipeline = KPipeline(lang_code='a', repo_id="hexgrad/Kokoro-82M", model=False)
def en_callable(text):
    if text == 'Uzen':
        return 'ˈjuːzən'
    return next(en_pipeline(text)).phonemes

# 选择语言代码
pipeline = KPipeline(lang_code='z', repo_id=model_base, model=model, en_callable=en_callable)

text = 'Uzen Zone说:床前明月光,It\'s地上霜。举头warming月,低头school乡。'

generator = pipeline(
     text,
     voice=f'{model_base}/voices/zf_073.pt',
     speed=1.0,
     split_pattern=r'[。;!?]+'
)

output_file = "output_combined.wav"

# 创建空的音频段
combined_audio = AudioSegment.silent(duration=0)

for gs, ps, audio in generator:
    # 使用 BytesIO 避免磁盘IO
    audio_buffer = io.BytesIO()
    sf.write(audio_buffer, audio, 24000, format='WAV')
    audio_buffer.seek(0)
   
    # 直接从 BytesIO 读取音频
    segment = AudioSegment.from_file(audio_buffer, format="wav")
    combined_audio += segment

# 保存合并后的音频
combined_audio.export(output_file, format='wav')

print(f"音频合成完成,已保存至 {output_file}")

以上脚本即加载本地模型,可以在离线环境运行,因为模型较小,甚至可以在端侧运行。

我们运行脚本后就能得要一个中英双语的音频了,需要注意的是Kokoro-82M模型并不能克隆声音,使用的是预置已有的声音模型,我这里使用的是zf_73,其中z代表中文f代表女性,如果需要男性声音,请使用模型voices文件夹下的zm_开头的声音模型吧。


上一篇:Ollama启用API密钥安全加固建议

下一篇:没有了

评论信息
暂无评论
发表评论
验证码: 
当前时间
小主信息

愿历尽千帆,归来仍少年。
3D标签云

Anything in here will be replaced on browsers that support the canvas element

友情链接

Copyright ©2017-2024 uzen.zone
湘ICP备17013178号-3