参数化语音以删除情感内容
我很高兴接受R或Matlab中的建议,但是我在下面介绍的代码仅是R。 下面附带的音频文件是两个人之间的简短对话。我的目标是使他们的讲话失真,使情感内容变得无法识别。困难在于,我需要一些参数空间来使这种变形从1到5,其中1是“高度可识别的情绪”,而5是“不可识别的情绪”。我认为我可以使用三种方法来实现R。 从此处下载“快乐”音频波。 从此处下载“愤怒”音频波。 第一种方法是通过引入噪声来降低整体清晰度。下面介绍了此解决方案(感谢@ carl-witthoft的建议)。这将同时降低语音的清晰度和情感内容,但这是非常“肮脏的”方法-很难正确地获得参数空间,因为您可以控制的唯一方面是噪声(音量)。 require(seewave) require(tuneR) require(signal) h <- readWave("happy.wav") h <- cutw(h.norm,f=44100,from=0,to=2)#cut down to 2 sec n <- noisew(d=2,f=44100)#create 2-second white noise h.n <- h + n #combine audio wave with noise oscillo(h.n,f=44100)#visualize wave with noise(black) par(new=T) oscillo(h,f=44100,colwave=2)#visualize original wave(red) 第二种方法是以某种方式调整噪声,仅在特定频带中使语音失真。我以为我可以通过从原始音频波中提取幅度包络,从该包络中产生噪声,然后将噪声重新应用于音频波来做到这一点。下面的代码显示了如何执行此操作。它所做的与噪声本身不同,使声音破裂,但它又回到了同一点-我只能在此处更改噪声的幅度。 n.env <- setenv(n, h,f=44100)#set envelope of …