• 使用Python 创建 AI Voice Cover


    f35c076e3c896f3cb0959e9633e2041d.jpeg

    这篇文章提供了使用Python文本到语音库和音频处理库逐步创建歌曲的指南。我们一起为机器赋予声音 —— 使用Python制作AI生成的声音。

    介绍

    您是否曾经想过,如果您最喜欢的歌曲由机器人演唱会是什么样子?随着人工智能和语音合成的最新进展,现在可以仅使用代码创建听起来逼真的歌声。在本文中,我们将介绍使用Python制作歌曲的 AI Voice Cover 的步骤。

    概述

    为了生成AI唱歌的声音,我们将将这个过程分为三个关键步骤:

    1. 文本到语音合成 - 将歌词转换为AI声音。

    2. 音频处理 - 处理声音以匹配歌曲。

    3. 混音 - 将AI声音与乐器混合。

    我们将专注于使用开源Python库来完成每个任务,而无需从头开始编写整个代码,最终的结果将实现足够好听以通过人耳的AI Voice Cover!

    文本到语音合成

    第一步是将歌曲的歌词转换为计算机生成的声音演唱的音频剪辑。Python有一些出色的文本到语音库,可以为我们处理这个任务。

    Coqui TTS是一个开源的神经文本到语音工具包,提供了用于生成语音的先进深度学习模型。它提供了各种语言和声音的预训练模型,不需要我们进行过多的设置。首先,安装Coqui TTS:

    pip install TTS

    我们可以加载一个现成模型来合成我们的歌词:

    1. from TTS.api import TTS
    2. model = TTS(model_name="tts_models/en/ljspeech/tacotron2-DDC", progress_bar=False)
    3. lyrics = "Never gonna give you up, never gonna let you down"
    4. audio = model.tts(lyrics)

    tts() 方法可以实现从输入文本生成音频。现在我们有一个AI声音朗读我们的歌词!还有其他好选择,如ESPnet TTS和Mozilla TTS。它们提供了类似的模型架构和预训练声音可供我们选择。

    音频处理

    虽然我们有一个计算机声音来朗读我们的歌词,但音调是单调的,缺乏表现力。为了使其听起来更自然,我们需要修改音频以匹配原歌曲的音调变化和节奏。CREPE(Crepe:用于音高估计的卷积表示)库可以帮助我们从原歌曲的声音中提取音调。然后,我们可以更改我们的AI声音以跟随该音调进行变化。

    首先,让我们加载原歌曲并使用CREPE随时间估计音调:

    1. import crepe
    2. original_vocals, sr = librosa.load("original_song.wav")
    3. _, pitch, _ = crepe.predict(original_vocals, sr=sr, viterbi=True)

    接下来,我们将使用类似PyRubberBand的工具来通过改变音调和时间而不改变长度和共振峰来操作我们的AI声音。PyRubberBand封装了Rubber Band,提供了高质量的音高转换和时间拉伸功能。我们可以创建一个RubberBandStretcher对象,并根据从原歌曲中提取的音调值设置pitch_scale:

    1. import rubberband
    2. synth_vocals, sr = model.tts(lyrics)
    3. rubberband = rubberband.RubberBandStretcher(synth_vocals, sr)
    4. for i in range(len(pitch)):
    5. rubberband.set_pitch_scale(pitch[i])
    6. shifted_vocals = rubberband.stretch()

    这将随着时间修改我们合成的声音的音调,以更好地匹配原始演出。一些附加效果,如颤音或共振峰转移,可以进一步提高逼真度。AutoVC库提供了这些功能,使AI语音模仿目标人声更加自然。

    混音

    最后一步是将处理过的AI声音与原始歌曲的器乐混合。首先,我们需要隔离器乐部分,这可以使用像Spleeter这样的专门工具来在音频文件上执行源分离来完成。

    1. from spleeter.separate import Separator
    2. separator = Separator('spleeter:2stems')
    3. instrumental = separator.separate(original_song)

    然后,我们使用适当的音量平衡将我们的AI封面声音覆盖在上面:

    1. from pydub import AudioSegment
    2. instrumental = AudioSegment.from_wav("instrumental.wav")
    3. ai_vocals = AudioSegment.from_wav("shifted_vocals.wav")
    4. final = instrumental.overlay(ai_vocals)
    5. final.export("ai_cover.wav", format="wav")

    现在我们有一个完成的AI Voice Cover可以分享了!声音可能不完美,但通过一些调整,它们可以听起来很像人类声音。

    进一步探索

    为了进一步处理更复杂的歌曲,一些额外的改进可能包括:

    ● 合成背景和谐音以伴奏主唱。

    ● 为更自然的歌声实施颤音和音高滑音。

    ● 调整模型参数,以更好地适应目标歌手的声音。

    ● 在合成期间使用神经声码器,如WaveRNN,以获得更好的音频质量。

    ● 训练自己的自定义TTS模型,而不是使用预训练声音。

    借助更先进的深度学习技术,AI唱歌声音的质量不断提高。谁知道,也许在将来,您最喜欢的歌手可能是一台计算机!

    结论

    生成歌曲的AI Voice Cover版本是一种探索现代语音合成和音频处理工具能力的有趣方式。使用Python库,如Coqui TTS、CREPE和PyRubberBand,我们可以组合成一个完整的工作流程,将歌词转换为逼真的歌声。

    尽管还存在一些限制,但质量正在迅速提高。合成声音的应用 - 无论是音乐、播客、有声书还是其他 - 是无穷无尽的。通过一点编码和音频工程,您也可以使计算机具备歌唱的能力!

    ·  END  ·

    HAPPY LIFE

    f1a93ff74bc2a6aa503d4335ddbc403e.png

    本文仅供学习交流使用,如有侵权请联系作者删除

  • 相关阅读:
    如何利用软文推广进行SEO优化(打造优质软文,提升网站排名)
    js学习笔记
    国家信息安全水平考试NISP证书(一级、二级、三级)
    Uboot spi-nor 设备信息定义及3地址模式和4地址模式的理解
    Postgresql实验系列(3)最简脏读插件
    linux 内核哪种锁可以递归调用 ?
    JS前端读取文件夹中文件(基于webpack)
    能快速构建和定制网络拓扑图的WPF开源项目-NodeNetwork
    前端研习录(18)——JavaScript运算符合集
    redhat环境ansible自动化部署
  • 原文地址:https://blog.csdn.net/weixin_38739735/article/details/132728056