在本地跑一个AI模型(4) - 会说话的模型

大家好,好久不见。前三篇教程我们聊了如何在本地搭建一个大语言模型,它能够理解和生成文本,这确实是一个非常有趣且有前景的应用领域。今天,我们将更进一步,让你的AI模型具备实际的语音输出能力。

让AI模型将文字转化为语音我们通常称之为语音合成,也就是我们常说的文本转语音(Text-to-Speech, TTS)。在AI高速发展的今天,人们已经可以使用神经网络训练模型。我们今天介绍的XTTS v2即是由 coqui-ai 开源的一种基于神经网络的模型,可以从多种语言的文本生成语音。XTTS v2 以其高质量、自然的声音以及克隆声音的能力而闻名。

虽然coqui-ai公司正在关闭过程中,但我们仍能从其开源的TTS代码中获益。感谢开源,让我们有机会在本地运行它。

安装TTS

截止目前,TTS项目尚不支持python 3.12版本,因此本文使用venv虚拟环境进行安装。

# 使用3.10版本的python创建venv
/opt/homebrew/opt/python@3.10/libexec/bin/python3 -m venv .venv
# 激活venv
source .venv/bin/activate 

我们不需要进行二次开发和调试,因此直接使用pip进行安装:

pip install TTS

下载XTTS v2模型

Ollama一样,TTS支持很多种模型。使用该命令查看一下所有支持的模型:

tts --list_models

虽然TTS会自动下载模型,但我相信大部分人还是喜欢自己下载模型,因为这样更快速和直接。

huggingface下载所有文件,放至~/Library/Application Support/tts/tts_models--multilingual--multi-dataset--xtts_v2目录下(MAC用户)或C:\users\你的用户名\AppData\Local\tts\tts_models–multilingual–multi-dataset–xtts_v2(Windows用户)。

运行该命令进行验证:

tts --model_name tts_models/multilingual/multi-dataset/xtts_v2 --list_speaker_idxs

如果出现以下内容则说明模型下载正确:

 > tts_models/multilingual/multi-dataset/xtts_v2 is already downloaded.
 > Using model: xtts
 > Available speaker ids: 
 .....

Available speaker ids列出来的是该模型内置的语音样板,有男有女。普通用户只要选择其中一个使用就可以了。

制作语音样板

前面已经提到过声音克隆,也就是说它可以根据你提供的一个样本语音文件生成与样本文件中声音相似的语音。简单来说,就好像是样本中的那个人在说话一样。

如果你想AI克隆你的声音,那你可以自己制作一个语音样板。你可以朗读并录制一个大约30秒的音频文件,做成.wav格式即可。你也可以使用这个示例样板,是杨澜在TED上演讲的片段。

python代码

让我们编写一段最简单的代码测试一下功能:

import torch
from TTS.api import TTS


text = """
随着 AI 智能浪潮到来,AI 编码助手成为越来越多开发者的必备工具,将开发者从繁重的编码工作中解放出来,极大地提高了编程效率,帮助开发者实现更快、更好的代码编写。

如今,国内有一位 AI 程序员,已经在某互联网大厂上岗一段时间了。

它就是阿里云数万名工程师最近频繁打交道的新同事 ——「通义灵码」,专属工号「AI001」。

通义灵码在正式入职之前,先是在阿里云内部和外部「实习」了几个月。大家的评价都很不错,真实好评率超 80%。

而且,通义灵码的工作节奏比 996 还要极致:7x24 小时随叫随到……

以 API 开发测试工作为例,通义灵码可将数分钟甚至十几分钟的人工编写测试耗时缩短到秒级,节省了人类程序员 70% 以上的测试代码工作量。

通义灵码免费向全民开放,所有人可以随时随地在手机上写代码、读代码、学习编程技能。所有人可以前往下方链接写代码、读代码、学习编程技能!
"""


device = "cuda" if torch.cuda.is_available() else "cpu"
tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2").to(device)

# generate speech by cloning a voice using default settings
tts.tts_to_file(text=text,
                file_path="output.wav",
                speaker_wav="yanglan.wav",
                # speaker='Sofia Hellen',
                language="zh-cn"
                )

注意这里的speaker_wavspeaker参数,如果你想让AI克隆语音,那就使用speaker_wav,并指定语音样板。如果你没有这方面的需求,可以直接使用speaker指定一个内置的语音样板。

等待代码执行的时间可能有些漫长,跟你的电脑配置有关。最后生成的语音文件为output.wav

总结

最后试听一下output.wav吧,是不是跟你预期的有点差距?我特意挑选了一段比较复杂的文字来做实验,比如出现了AI996、和7x24等等词汇。这些词汇模型确实不太好把握,而且还存在一个老生常谈的问题:所有模型对中文的支持都不太好。但也不用太悲观,我们现在还都是使用的默认配置不是吗?经过一番调教后模型是不是能更智能呢?

本文首发于:https://babyno.top/posts/2024/04/run-an-ai-model-locally-4/
欢迎订阅公众号:

<think>好的,用户现在问的是如何本地部署这些TTS模型并使用。之前已经介绍了主流的开源语音生成大模型,现在需要指导具体的部署和使用步骤。首先,我需要考虑用户可能的背景。他们可能是开发者或研究人员,有一定的技术基础,但可能对具体的部署流程不熟悉。需要确保步骤清晰,易于理解,同时覆盖不同模型的通用流程和个别注意事项。 用户的需求是本地部署,所以需要考虑环境配置、依赖安装、模型下载、推理代码示例等。另外,用户可能对硬件要求、常见问题解决感兴趣。需要分步骤讲解,可能还要给出不同模型的例子,比如Coqui TTS和PaddleSpeech,这样用户可以根据自己选择的模型参考具体操作。 同时,需要注意用户可能遇到的问题,比如CUDA版本不匹配、依赖冲突、预训练模型下载失败等,要提前给出建议。另外,许可协议和商用注意事项也需要提醒,特别是如果用户有商业用途的需求。 还要考虑不同操作系统的差异,比如Linux和Windows,但可能主要针对Linux,因为很多开源项目在Linux上支持更好。不过如果某些模型支持Windows,也应该提及。此外,是否需要Docker部署也是一个考虑点,但可能保持步骤通用,让用户根据项目文档自行选择。 最后,总结部分需要强调硬件要求、中文支持、预训练模型的重要性,以及测试和优化的必要性。确保用户有一个全面的了解,能够根据自身情况选择合适的模型并成功部署。</think>以下是如何在本地部署开源TTS模型并使用的通用步骤和注意事项,以 **Coqui TTS** 和 **PaddleSpeech** 为例: --- ### **一、通用部署流程** #### **1. 环境准备** - **操作系统**: Linux(推荐Ubuntu 20.04/22.04)或 Windows(部分模型支持) - **硬件要求**: - CPU: 至少4核(推荐8核以上) - GPU: NVIDIA显卡(支持CUDA 11+,显存≥8GB更佳) - 内存: ≥16GB - **依赖工具**: - Python 3.8+、PyTorch/TensorFlow、CUDA/cuDNN(GPU加速时需匹配版本) - 包管理工具: `pip`、`conda` --- #### **2. 安装模型库** 以 **Coqui TTS** 为例: ```bash # 创建虚拟环境(推荐) conda create -n tts python=3.8 conda activate tts # 安装依赖 pip install TTS ``` 以 **PaddleSpeech** 为例: ```bash # 安装PaddlePaddle框架 pip install paddlepaddle-gpu==2.5.1 -i https://mirror.baidu.com/pypi/simple # 安装PaddleSpeech pip install paddlespeech ``` --- #### **3. 下载预训练模型** - **Coqui TTS**: ```python from TTS.api import TTS tts = TTS(model_name="tts_models/en/ljspeech/glow-tts", gpu=True) # 自动下载模型 ``` - **PaddleSpeech**: ```python from paddlespeech.cli.tts import TTSExecutor tts = TTSExecutor() tts._get_pretrained_models("fastspeech2_csmsc-zh") # 下载中文模型 ``` --- #### **4. 运行推理** - **Coqui TTS生成英语语音**: ```python tts.tts_to_file(text="Hello, this is a test.", file_path="output.wav", speaker=tts.speakers[0]) # 指定说话人(可选) ``` - **PaddleSpeech生成中文语音**: ```python tts.execute(text="欢迎使用语音合成服务。", output="output.wav", am="fastspeech2_csmsc", # 声学模型 voc="hifigan_csmsc") # 声码器 ``` --- ### **二、不同模型的特殊配置** #### **1. 音色克隆(如OpenVoice)** ```bash # 克隆仓库 git clone https://github.com/myshell-ai/OpenVoice.git cd OpenVoice # 安装依赖 pip install -r requirements.txt # 运行克隆(需准备3秒参考音频) python openvoice_app.py --text "目标文本" --reference_audio ref.wav --output cloned.wav ``` #### **2. 扩散模型(如DiffWave)** ```bash # 安装DiffWave pip install diffwave # 生成语音(需配合预训练声学模型) from diffwave.inference import predict predict(input_text="Text to synthesize", output_path="output.wav") ``` --- ### **三、常见问题与优化** #### **1. 报错处理** - **CUDA版本不匹配**: 检查PyTorch/TensorFlow与CUDA版本对应关系(如PyTorch 2.0需CUDA 11.8) - **依赖冲突**: 使用虚拟环境隔离不同模型的依赖 - **下载失败**: 手动下载模型文件到`~/.local/share/tts/`(Coqui TTS)或`~/.paddlespeech/`(PaddleSpeech) #### **2. 性能优化** - **GPU加速**: 确保代码中设置`gpu=True`或`use_cuda=True` - **批量生成**: 使用多线程(如Coqui TTS的`tts.tts_to_buf`) - **量化压缩**: 对模型进行FP16或INT8量化(需框架支持) --- ### **四、部署总结** | 模型类型 | 推荐配置 | 典型应用场景 | |----------------|-----------------------------------|---------------------------| | 基础TTS | CPU + 4GB内存 | 低并发测试、本地脚本朗读 | | 高保真/语音克隆| GPU(RTX 3060+) + 16GB内存 | 虚拟助手、有声内容生成 | | 扩散模型 | 多GPU(如A100) + 32GB内存 | 影视级配音、高自然度场景 | --- ### **关键注意事项** 1. **中文支持**: PaddleSpeech对中文优化最佳,Coqui TTS需选择`tts_models/zh-CN`分支 2. **商用授权**: 确认模型协议(如VITS使用非商用协议,OpenVoice可商用) 3. **实时性优化**: 启用缓存(如Coqui TTS的`use_cuda=True` + `half=True`) 如果需要具体模型的部署细节,可提供模型名称,我会给出更针对性的步骤!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值