当前位置: 欣欣网 > 码农

TTS它又来了!OpenVoice:一款借鉴于TTS实现的强大的AI语音克隆工具!

2024-01-26码农

点击上方「 蓝色字体 」关注我,选择「 设为星标 」!

回复「 电子书 」领取超多经典计算机书籍

前言

2023年被大家称为人工智能元年 ,在GPT技术不断爆火的背景下,人工智能技术也在不断的发展和演化。各种AI工具也层出不穷,其中 语音克隆技术 也是尤为引人瞩目的产品之一。

OpenVoice 作为一款强大的多语言即时语音克隆AI工具,可以为用户提供高效、个性化的语音克隆服务,是一款值得推荐的项目。

项目介绍

OpenVoice myshell ai 开源的一款基于人工智能技术的语音克隆工具。

其核心功能是通过提供发言者的短音频片段(参考语音),实现声音的高效克隆。

这意味着您可以使用OpenVoice来克隆任何人的声音,而且不限于特定语言。无论您是想要模仿某位名人的声音,还是需要在不同语言之间进行语音转换,OpenVoice都能够满足您的需求。

项目地址: https://github.com/myshell-ai/OpenVoice

特色功能:

  • 准确的音色克隆 :OpenVoice 可以准确克隆参考音色并生成多种语言和口音的语音。

  • 灵活的音色控制 :OpenVoice 可以对语音风格(例如情感和口音)以及其他风格参数(包括节奏、停顿和语调)进行精细控制。

  • 零样本跨语言语音克隆 :生成语音的语言和参考语音的语言都不需要出现在大规模说话人多语言训练数据集中。

  • 项目贡献开发者:

  • • 秦增一,麻省理工学院&MyShell

  • • 赵文亮,清华大学

  • • 于绪敏,清华大学

  • • Ethan Sun,MyShell

  • 如何使用它?

    OpenVoice的使用方法非常简单,同常用开源项目一样,需要如下步骤:

    提前创建好Python3.9及以上的虚拟环境

    1、访问OpenVoice项目地址,并将项目整体包下载下来,也可以借助git命令克隆到本地或云服务器。

    git clone https://github.com/myshell-ai/OpenVoice.git

    2、安装项目依赖库,依赖库列表在项目根目录下requirements.txt文件中。

    pip install -r requirements.txt

    3、下载官方提供的预训练模型,里面包含了英文和中文的预训练模型,还有转换器模型。

    模型地址: https://myshell-public-repo-hosting.s3.amazonaws.com/checkpoints_1226.zip

    模型包下载需要魔法,小编已提前准备好,如无法下载可在公众号内回复 ov模型 获取!

    下载后将文件解压到项目根目录即可。

    4、模型的执行

    我们可以运行一下官方提供的demo_part1.ipynb,这个示例中使用了默认的录音文件作为目标音频,然后使用TTS输出原始音频进行转换。

    如果你没有jupyter环境,可以尝试将其中的代码复制到py文件中运行,如果一切正常,你将会得到一个 outputs 文件夹,其中的 tmp.wav 为TTS原始音频, output_chinese.wav 为转换后的目标音频,可以试听 output_chinese.wav 确认转换效果。

    import os
    import torch
    import se_extractor
    from api import BaseSpeakerTTS, ToneColorConverter
    ckpt_converter = 'checkpoints/converter'
    # 使用GPU进行计算
    device = 'gpu'
    output_dir = 'outputs'
    # 加载基础模型
    tone_color_converter = ToneColorConverter(f'{ckpt_converter}/config.json', device=device)
    tone_color_converter.load_ckpt(f'{ckpt_converter}/checkpoint.pth')
    # 创建输出目录
    os.makedirs(output_dir, exist_ok=True)
    # 训练音频
    reference_speaker = 'resources/example_reference.mp3'
    target_se, audio_name = se_extractor.get_se(reference_speaker, tone_color_converter, target_dir='processed', vad=True)
    # TTS配置
    ckpt_base = 'checkpoints/base_speakers/ZH'
    base_speaker_tts = BaseSpeakerTTS(f'{ckpt_base}/config.json', device=device)
    base_speaker_tts.load_ckpt(f'{ckpt_base}/checkpoint.pth')
    source_se = torch.load(f'{ckpt_base}/zh_default_se.pth').to(device)
    save_path = f'{output_dir}/output_chinese.wav'
    text = "今天是1月26号,早安!"
    src_path = f'{output_dir}/tmp.wav'
    # TTS转换,speed为语速
    base_speaker_tts.tts(text, src_path, speaker='default', language='Chinese', speed=0.9)
    # 数字水印内容
    encode_message = "@Python_fy"
    # 运行转换
    tone_color_converter.convert(
    audio_src_path=src_path, 
    src_se=source_se, 
    tgt_se=target_se, 
    output_path=save_path,
    message=encode_message)

    特别重要:

    如果出现了如下错误: HTTPSConnectionPool(host='huggingface.co', port=443) 则可能是由于国内目前无法访问huggingface导致,因为执行过程需要下载一个pkl模型文件。

    huggingface模型地址: https://huggingface.co/M4869/WavMark/resolve/main/step59000_snr39.99_pesq4.35_BERP_none0.30_mean1.81_std1.81.model.pkl

    我们需要手动去下载模型文件,并修改源代码替换路径,在你的Python三方库安装位置下,site-packages\wavmark_ init _.py中的第10行,进行修改,将其设置为本地读取即可。修改后的代码:

    defload_model(path="default"):
    if path == "default":
    # resume_path = hf_hub_download(repo_id="M4869/WavMark",
    # filename="step59000_snr39.99_pesq4.35_BERP_none0.30_mean1.81_std1.81.model.pkl",
    # )
    resume_path = "C:/Users/Number/.cache/huggingface/hub/models--M4869--WavMark/step59000_snr39.99_pesq4.35_BERP_none0.30_mean1.81_std1.81.model.pkl"
    model = my_model.Model(16000, num_bit=32, n_fft=1000, hop_length=400, num_layers=8)
    checkpoint = torch.load(resume_path, map_location=torch.device('cpu'))
    model_ckpt = checkpoint
    model.load_state_dict(model_ckpt, strict=True)
    model.eval()
    return model

    继续执行后,如果出现silero无法下载,可能是Git未设置代理,可能silero仓库无法正常拉取。导致运行时报下载超时的错误:

    Traceback (most recent call last):
    File "C:\Python39\lib\site-packages\whisper_timestamped\transcribe.py", line 1885in get_vad_segments
    _silero_vad_model, utils = torch.hub.load(repo_or_dir=repo_or_dir, model="silero_vad", onnx=onnx, source=source)
    File "C:\Python39\lib\site-packages\torch\hub.py", line 539in load
    repo_or_dir = _get_cache_or_reload(repo_or_dir, force_reload, trust_repo, "load",
    ...省略若干调用链...
    File "C:\Python39\lib\http\client.py", line 289in _read_status
    raise RemoteDisconnected("Remote end closed connection without"
    http.client.RemoteDisconnected: Remote end closed connection without response

    Silero地址: https://codeload.github.com/snakers4/silero-vad/zip/refs/heads/master

    同样的需要手动下载,下载后将文件放在torch默认的缓存目录即可,一般指向的是: C:\Users\Number\.cache\torch\hub\ ,文件夹名称为: snakers4_silero-vad_master ,将文件解压到这个文件夹下即可。

    Linux用户的缓存目录可能在:/home/用户名/.cache

    Mac用户的缓存目录可能在:/Users/用户名/.cache

    以上资源包若都无法下载,也可在公众号内回复 ov模型 获取!

    应用场景

  • 个性化语音助手 :定制属于自己的个性化语音助手,为用户提供更加亲切贴心的服务体验。

  • 语音内容创作 :为视频、广播等内容创作提供真实、个性化的配音声音。

  • 语音合成应用 :用于各类语音合成应用领域,如教育、娱乐等。

  • 总结

    总的来说,OpenVoice是一款功能强大、灵活多样的语音克隆AI工具,具有广泛的应用前景和发展潜力。

    但是通过实测你可能会发现对于中文的音调效果处理不太理想,可能是有由于该项目的实现借鉴于TTS,而它对于中文支持不太好的原因,您可以尝试使用真人发音或者换其它优秀的TTS生成原始音频再进行音色转换,这将会取得不错的效果。

    写到最后

    感谢您的一路陪伴,用代码构建世界,一起探索充满未知且奇妙的魔幻旅程。如果您对 Python编程技巧、好玩实用的开源项目、行业新知 趣事和各类技术干货 等充满兴趣,那么不要错过未来我为大家奉上的精彩内容!点击 关注 让您的探索学习之旅更加丰富多彩,我们一同成长,一同前行! 🚀💻📚

    求一键三连 点赞、转发、在看

    推荐关注

    公众号内回复关键字「 电子书 」领取PDF格式的电子书籍( Python入门、异步编程、网络爬虫、高性能编程、数据分析与挖掘实战 Spring Linux CSS、VUE 自动化测试、程序员面试宝典 )。


    如果本文对您有帮助,也请帮忙点个 赞👍 + 在看 哈!❤️

    在看你就赞赞我!