正如您可能注意到的,我对python和声音处理非常陌生。我(希望)使用python和logfbank和mfcc函数从wave文件中提取FFT数据。(logfbank似乎给出了最有希望的数据,mfcc的输出对我来说有点奇怪)。在
在我的程序中,我想更改logfbank/mfcc数据,然后从中创建wave数据(并将它们写入文件)。我真的没有找到任何关于从FFT数据创建波形数据的过程的信息。你们有谁知道怎么解决这个问题吗?非常感谢:)
这是我目前为止的代码:
from scipy.io import wavfile
import numpy as np
from python_speech_features import mfcc, logfbank
rate, signal = wavfile.read('orig.wav')
fbank = logfbank(signal, rate, nfilt=100, nfft=1400).T
mfcc = mfcc(signal, rate, numcep=13, nfilt=26, nfft=1103).T
#magic data processing of fbank or mfcc here
#creating wave data and writing it back to a .wav file here
利用Overlap Add method可以将适当构造的包含幅度和相位的STFT谱图转换回时域波形。重要的是谱图结构必须具有constant-overlap-add属性。在
这可能是一个挑战,让你的修改正确地操纵幅度和相位的频谱图。所以有时候相位会被丢弃,而幅值会被独立地操纵。为了将其转换回波形,必须在重建(相位重建)过程中估计相位信息。这是一个有损的过程,通常计算量很大。已建立的方法使用迭代算法,通常是Griffin-Lim的一个变体。但是现在也有使用卷积神经网络的new methods。在
使用librosa从mel谱图或MFCC获得的波形
librosa version 0.7.0包含一个快速的Griffin Lim实现以及用于反转MFCC的mel谱图的辅助函数。在
下面是一个代码示例。输入测试文件位于https://github.com/jonnor/machinehearing/blob/ab7fe72807e9519af0151ec4f7ebfd890f432c83/handson/spectrogram-inversion/436951__arnaud-coutancier__old-ladies-pets-and-train-02.flac
结果
重建后的波形会有一些伪影。在
上面的例子有很多重复的噪音,比我预期的要多。使用《无畏》中的标准降噪算法可以大大降低噪声。在
相关问题 更多 >
编程相关推荐