前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【研究日记】虚拟歌姬自动调教之歌曲音频切割的问题

【研究日记】虚拟歌姬自动调教之歌曲音频切割的问题

作者头像
杨丝儿
发布2022-03-21 10:56:32
4650
发布2022-03-21 10:56:32
举报
文章被收录于专栏:杨丝儿的小站

🍀碎碎念🍀 Hello米娜桑,这里是英国留学中的杨丝儿。我的博客的关键词集中在算法、机器人、人工智能、数学等等,点个关注吧,持续高质量输出中。 ⭐️B站账号杨丝儿今天也在科学修仙

🌟背景

这篇研究日记是在研究出现状况时的一份记录,分享出来,方便自己记忆查阅,也方便有类似想法的朋友 避坑

⭐️介绍

虚拟歌姬自动调教是我正在研究的一个深度学习的落地方式。期间为了提升模型的效果,我们尝试了很多方法,其中之一便是这篇文章将要讨论到的歌曲音频切割。

⭐️目标

歌曲音频切割的目标是根据歌曲波形信息,将每一个字对应的音频进行切割。

⭐️挑战

相较于一般的对话音频,歌曲音频中字与字的间隔非常模糊,就算是人自己也不容易清晰辨识歌曲音频中的每一个字。

🌟过程

经过连续几个休息日的复现和实验,我整理了以下几种切割方案。

⭐️根据停顿对歌曲进行切割

顾名思义就是根据静音区间进行切割。设置响度阀值,低于这个响度的音频都视作静音片段。在处理对话文本时最常用的也是这种方法,因为他最大的好处就是快速可靠。

python代码部分使用的是pydub模块,详细代码参考:Python pydub实现语音停顿切分

代码语言:javascript
复制
from pydub import AudioSegment
from pydub.silence import split_on_silence

chunks = split_on_silence(sound,
    # must be silent for at least half a second
    min_silence_len=500,
    # consider it silent if quieter than -16 dBFS
    silence_thresh=-16)

⭐️采用KMEANS方法进行切割

类似的思想我在之前文章中有提到。使用聚类的方法对音频进行分割,实现对音频的分段。

具体的实现代码这里我推荐一个Github上的项目:py_speech_seg这里面有比较完善的使用Kmeans方法 结合接下来要提到的VAD算法进行音频分割的python函数。

不使用VAD的Kmeans方法无法对音频进行合理的切割,经常会有字中分割的情况,而且无法拟合字数,因而无法确定具体的类别个数 K。

采用VAD算法预处理后再使用Kmeans方法速度更快,效果更好,可以实现在停顿部分进行切割。但是依然需要根据程序的实验结果,人为确定类别个数K,而且存在文本粘连问题,往往一段切割出来的文本中包含好几个字。

⭐️根据VAD算法识别间隔并切割

语音激活检测(VAD, Voice Activation Detection)算法主要是用来检测当前声音信号中是否存在人的话音信号的。该算法通过对输入信号进行判断,将话音信号片段与各种背景噪声信号片段区分出来,使得我们能够分别对两种信号采用不同的处理方法。

详见:还是不会VAD?三分钟看懂语音激活检测方法

⭐️采用BIC方法进行切割

在统计学里,处理模型选择问题时我们往往采用BIC进行判定,即贝叶斯信息准则。BIC是似然函数(likelihood function)加上一个惩罚项组成的,这个加上的惩罚项与模型拟合的参数有关,这样可以防止过拟合。

参考:Python实现基于BIC的语音对话分割 参考:Speaker, Environment and Channel Change Detection and Clustering via the Bayesian Information Criterion

相较于Kmeans方法,采用BIC的切割相对较慢,但是片段的准确度较高。字的粘连问题得到一定的解决。

⭐️采用BILSTM方法进行切割(可能的方法)

在之前提到的py_speech_seg项目中有一种还未完成的机器学习的方法,BILSTM方法,不确定其可行性。

🌟结论

每一种方法都有自己的特点,但是没有一种能够满足我的需求,需要进一步研究。因此最开始的虚拟歌姬自动调教项目需要放缓。

🌟参考

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-09-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🌟背景
    • ⭐️介绍
      • ⭐️目标
        • ⭐️挑战
        • 🌟过程
          • ⭐️根据停顿对歌曲进行切割
            • ⭐️采用KMEANS方法进行切割
              • ⭐️根据VAD算法识别间隔并切割
                • ⭐️采用BIC方法进行切割
                  • ⭐️采用BILSTM方法进行切割(可能的方法)
                  • 🌟结论
                  • 🌟参考
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档