- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想根据我拥有的 .WAV 格式的样本在 MATLAB 中生成我自己的 Kick、Clap、Snare 和 Hi-Hat 声音样本。
现在它听起来根本不正确,我想知道我的代码是否没有意义?或者,如果是我错过了一些合理的理论。
这是我现在的代码。
[y,fs]=audioread('cp01.wav');
Length_audio=length(y);
df=fs/Length_audio;
frequency_audio=-fs/2:df:fs/2-df;
frequency_audio = frequency_audio/(fs/2); //Normalize the frequency
figure
FFT_audio_in=fftshift(fft(y))/length(fft(y));
plot(frequency_audio,abs(FFT_audio_in));
[pk, loc] = findpeaks(abs(FFT_audio_in), 'MinPeakHeight', 0.001);
loc = frequency_audio(loc);
loc = loc(length(loc)/2+1:length(loc))
pk = pk(length(pk)/2+1:length(pk))
for i=1:21116
clap(i) = 0;
for j = 1:length(loc);
clap(i) = bass(i) + pk(j)*sin(loc(j)*i);
end
end
最佳答案
您正在对样本的整个时间段进行 FFT,然后在整个持续时间内生成平稳的正弦波。这意味着鼓的时间特征消失了。时间特征是打击乐清音乐器的最大特征。
由于这非常重要,我建议您先从那里开始,而不是从频率内容开始。
时间特征可以通过信号的包络来近似。 MATLAB为此提供了一个方便的函数,称为envelope。 .使用它来提取样本的信封。
然后生成一些白噪声并将噪声乘以包络,重新创建一个非常简单的打击乐器版本。您应该听到 Kick、Clap、Snare 和 Hi-Hat 之间的明显区别,尽管听起来与原版不同。
一旦这工作,您可以尝试合并频率信息。我建议使用 STFT 来获得声音的频谱图,这样您就可以看到频谱如何随时间变化。
关于matlab - 如何在 MATLAB 中使用 FFT 和 findpeaks() 从 .WAV 文件重新创建乐器声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55968988/
我有一个名为“endata”的大型数据集 - 590 万个数据点。这表示超过 90 天的数据。数据集是单个向量。前五个数据点如下所示: 0.0171365458527622 0.01745772805
我想知道如何让 findpeak 函数检测负峰而不是正峰,它检测下图中显示的红色峰,我需要检测蓝色峰..任何想法?? 非常感谢。 最佳答案 如前所述,您必须使用-data。 这是一个例子, x = 0
编辑:其实这不是意外行为,但我仍然需要一个解决方案。findpeaks 将数据的每个元素与其相邻值进行比较。 我的数据包含我用函数 findpeaks 检测到的峰来自信号处理工具箱。有时函数似乎无法正
我在 pramca R 包(v. 2.1.1 ).我正在使用 R 3.4.3 x64 窗口。 我想要识别可能有两个重复值的峰值的函数,我相信选项 peakpat 是我可以做到这一点的方法。 这个问题已
我正在尝试将 Matlab 提供的 findpeaks 方法应用于 Python 项目以获得相同的结果。在 Internet 上,我检索了许多算法来查找 python 中的峰值,但我发现的最佳来源是以
我使用函数 findpeaks来自 MATLAB 的信号处理工具箱。但每次该函数找不到任何峰值时,我都会收到警告: Warning: No peaks found. > In findpeaks at
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Peak-finding algorithm for Python/SciPy 我正在寻找 float 向量
我想根据我拥有的 .WAV 格式的样本在 MATLAB 中生成我自己的 Kick、Clap、Snare 和 Hi-Hat 声音样本。 现在它听起来根本不正确,我想知道我的代码是否没有意义?或者,如果是
我正在使用 scipy 函数寻求帮助 Find_Peaks在 pandas.Series.Rolling.apply 功能中。我抛出 TypeError: only size-1 arrays can
我是一名优秀的程序员,十分优秀!