最近在做变声的工作,想实现的功能包括:男女声互转,转萝莉音,大叔音,机器音等。
核心理论还是信号处理一块,对标的是QQ变声效果。大致的效果已经出来了,还成。
实现商业化的变声功能,最核心的是要找到对应的资料,包括书籍,文献和博客。
但是博客文献书籍又特别少,虽然很多博客都有讲如何基于FMOD实现变声,但FMOD并不是完全开源项目,基于FMOD搭建的框架并不能免费商用,其次,大家也只是点到为止,男声提高八度就是女声,实在是太粗糙了,难以商用化。文献的话,实在是太少了,我几乎没找到这种变声的论文,想想也是,男女声互转,转萝莉音,大叔音这种也上不了学术台面,没啥相应的论文,多是一些TSM和voice conversion的论文。
至于书籍,倒还真有一本不错的——《Audio EffectsTheory,Implementation and Application》,是Joshua D.Reiss于2014年出版的书,书中对于常见的音效讲的非常清楚,还有对应的C++伪代码,可执行代码发布在GitHub上了。https://github.com/juandagilc/Audio-Effects
其中谈到的很多音效都能非常简易的实现,比如如何实现颤音,让声音听起来搞笑或者诡异一些,书中有两种实现方法,一种是延时实现,一种直接对时域的语音信号调制,用一个2-14HZ的正弦调制语音就好了,非常简单,而且效果也很不错。
再如,如何实现人声转机器音,一开始我搜了半天,才在csdn上搜到了关于人声转机器音的代码。https://download.csdn.net/download/zcy618/4527258?biz_id=103&utm_term=%E4%BA%BA%E5%A3%B0%E5%8F%98%E6%9C%BA%E5%99%A8%E9%9F%B3&utm_medium=distribute.pc_search_result.none-task-download-2~all~sobaiduweb~ 这个是基于频率shift实现的,语音转频域然后做一个fftshift就好了。但效果非常差,有着难以解决的杂音,这种杂音是全频带的而且非常刺耳,无法商用化。但在书中,讲了两种机器音的实现方法:时域语音转频域,将相位全部置零,再转回时域,就是机器音了;另外一种是,相位随机,转回时域就好了。这种比CSDN的fftshift好一些,杂音虽然有,但可以除掉,得到一个较好的机器音音效。
另外还有一些回声,混响,多普勒效应,3D音效,EQ等实现,感觉都挺好的。
浙公网安备 33010602011771号