跳至主要內容

别再被同质化的内容淹没!用 AI 克隆技术打造你独特的声音品牌!

工具AIVITS声音克隆约 2379 字大约 8 分钟...

每个人的声音都是独一无二的,克隆自己的声音可以用于制作高度个性化的内容,如播客、视频、音乐等。

你的声音是个人品牌的重要组成部分。利用人工智能,你可以不需要亲自录音就能生成大量优质音频内容,节省时间的同时确保内容质量和一致性。市场上虽有众多第三方语音生成技术,但它们大多数使用通用或他人的声音,导致内容缺乏个性化特质。例如,「注意看,这个男人叫小帅」的声音已经在众多影视作品中被重复使用。与之不同,AI 克隆技术能提供前所未有的个性化和定制体验。

艾什莉的播客就是一个典型例子,她利用 AI 生成了根据当日新闻热点定制的讲稿,再用 AI 克隆的自己的声音进行朗读,配上背景音乐,既经济又高效。

我使用了 VITS-fast-fine-tuningopen in new window 来克隆我的声音。这款工具能从短音频、长音频或视频中克隆特定角色的声音,只需几小时即可完成预训练的 VITS 模型的微调。微调后的模型不仅能进行声线转换,还能完成中、日、英三种语言的文本到语音的转换。

收集语音样本

克隆声音的第一步是准备自己的声音样本。确保录音中只有你的声音,且语音清晰、语速均匀。录音完成后,需检查 final_annotation 等 txt 文件的音频转写情况,确认停顿和文字是否正确。

为增加语音样本的多样性,选择不同主题和领域的文本材料。我使用的文本来自标贝数据集open in new window,该数据集包含 10000 条文本和对应的读音。我选了 300 条用于短音频录制,每条录音时长在 2 至 10 秒之间。语料的质量优于数量,如果需要,可以减少语料条数或使用长视频。VITS-fast-fine-tuning 工具会自动将长音频剪切成短音频。

云端训练模型

关于模型的微调和部署,你可以参考官方 GitHub 页面open in new window的详细操作指南。

Google Colabopen in new window 进行模型微调时,可能会因长时间未连接或超出免费配置限制而中断。为防止数据丢失,应提前选择「STEP 5 下载模型」的下载选项。在 Colab 进行云端训练时,建议长音频时长控制在 20 分钟以内,max_epochs 设置为 100。如需进一步提升模型质量,可继续训练模型,再进行 100 次 epochs。

我曾在 Colab 上用 8 分钟的 B 站视频进行训练,但三小时后由于超出免费额度被终止。后来我在配备了 3080Ti 的本地设备上进行训练,4 小时后便完成了调试。

本地训练模型

如果需要进行深入的模型调整,比如执行 5000 次 epochs,可能需要数天的时间。为此,你可以参考 LOCAL.mdopen in new window 来在本地环境进行训练。而针对其中可能存在的不明确部分,以下补充具体步骤和建议。

  • 第 0 步:预先确认本地环境的 Python 版本为 3.8,并且已经安装了 Microsoft C++ 生成工具open in new window 和 ffmpeg。这样可以预防潜在错误。在启动本地运行之前,执行 pip install --upgrade numpy 来更新 numpy 版本。

  • 第 6 步:鉴于 wget 下载命令在 Windows 中可能不起作用,建议手动下载 sampled_audio4ft_v2.zipopen in new window,随后将文件解压至运行路径。

  • 第 7 步 (下载模型与配置):

  • 第 8 步:由于 LOCAL.md 教程中未包含在线视频,所以需要将相关视频文件下载到本地。

  • 第 9 步:运行以下命令:

    python scripts/video2audio.py
    python scripts/denoise_audio.py
    
    python scripts/long_audio_transcribe.py --languages C --whisper_size large-v2
    python scripts/short_audio_transcribe.py --languages C --whisper_size large-v2
    
    python scripts/resample.py
    
  • 第 10 步:执行 python preprocess_v2.py --add_auxiliary_data True --languages C

  • 第 11 步:

    • 开始训练:python finetune_speaker_v2.py -m ./OUTPUT_MODEL --max_epochs 5000 --drop_speaker_embed True
    • 如果训练过程中断,要继续训练,执行 python finetune_speaker_v2.py -m ./OUTPUT_MODEL --max_epochs 10000 --drop_speaker_embed False --cont True

文字生成语音

微调完成后,将 OUTPUT_MODEL 下的模型文件和 config 文件放在语音生成工具 inferenceopen in new window 解压文件夹下,其文件名分别为 G_latest.pthfinetune_speaker.json。一切准备就绪后,运行 inference.exe, 浏览器会自动弹出窗口,即可在本地环境下生成个性化的语音内容。注意其所在路径不能有中文字符或者空格。

在这个阶段,特别注意中文模型(即 languages C)的 finetune_speaker.json 格式问题。确保「speaks」部分被修改为字典格式,否则在运行 inference 时,你可能会遇到 File "inference.py", line 99 的报错。为方便,你可以直接点击这里open in new window下载我调整好的 json 文件。如果你不需要二次元声音,可以直接使用 OUTPUT_MODEL 下的 config.json 替代 finetune_speaker.json

声音微调

生成声音与原声无关

在检查语料转写文本时,尽量减少对 short_character_anno.txtlong_character_anno.txt 文件的非必要修改。过多的修改可能会导致生成的声音与原始声音产生明显差异。最初的训练中,可以将 max_epochs 设置为 200。在确生成声音符合预期后,再进行后续的训练。

例如:因个人语调的不同,我读的是「假语村言」,但 whisper 将其识别为「甲乙寸言」。如果我保留 whisper 的识别结果不做修改,最终生成的声音与我本人的声音非常接近。但当我将 whisper 识别结果修改为原文本后,生成的声音产生了显著变化,几乎听不出与原声音的相似性。我们只需要对那些发音明显错误的部分做出修改。例如,「假」和「甲」的发音相同,无需更改;「语」和「乙」之间的差异较大,但由于是个人发音的特点,也无需更改;对于「村」和「寸」这样声调不同的词汇,可以在检查录音后做出相应更改。

语音克隆的「口音」问题

这个示例是使用 8 分钟 B 站视频和 CJE 模型训练出的。但你可能注意到了明显的断调口音问题,仿佛一个日本人在说中文。正如 @zachx121 指出的,「CJE 用的时候 romaji 的注音,就好比说用汉语拼音去标注英文单词的发音一样会有“口音”」。为了避免这个问题,可以使用纯中文设计的 C 模式进行训练和生成,以确保音频的自然和准确性。增加训练次数也有助于改善口音问题。

常见问题

无法启动 inference

如果你遇到无法启动 inference 的问题,通常是因为 finetune_speaker.json 配置文件有问题。确保你下载的 json 文件是对应的版本,并且格式完整。如果问题仍然存在,可以考虑使用 configs/modified_finetune_speaker.json 文件替代原有配置文件,通常这样可以解决运行中出现的错误。

长音频识别问题

要注意,长音频需要采用 wav 格式。即即使原本为 mp3 格式的音频文件在后期转为 wav,也可能出错。因此,直接使用 wav 格式进行长音频录制或选择是更好的做法。

录音中出现 zh

在使用纯中文模式调试时,音频前后可能会标注当前语言,例如,中文语言中出现 ZH 标注。为去除这些不必要的语言标注,可以将生成语言设置为 Mix 模式。

长句读音含糊

用短句生成了一段 6 秒的清晰音频,但当将两个相同的短句重复形成长句时,生成的语音时长仅为 9 秒,发音特别含糊。可能是因为语料文本过度修改,一些语音没有被 Whisper 识别,但已经标注。这与训练次数无关,出现此问题后,需重新检查语料。

已到达文章底部,欢迎留言、表情互动~
  • 赞一个
    0
    赞一个
  • 支持下
    0
    支持下
  • 有点酷
    0
    有点酷
  • 啥玩意
    0
    啥玩意
  • 看不懂
    0
    看不懂
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3