1

我在 MATLAB 中有一个 wav 文件,我可以看到它的采样率。我需要做的就是改变这个 1 号。文件中的所有其他内容都将保持不变。(生成的声音将以不同的速度播放,但具有相同的样本数据数组。)

我需要这样做的原因是,当我告诉 MATLAB 打开除 8k 以外的任何采样的东西时,它似乎吓坏了。我需要 MATLAB 来编辑文件,所以采样率真的无关紧要,因为完成后我会将它放回 wav 文件中。所以我要么需要能够更改存储采样率的 wav 文件中的值,要么让 MATLAB 将它喜欢的采样率从 8k 更改为记录我的文件的采样率。

4

3 回答 3

3

如果您只想更改采样频率,这里是代码,但它会扭曲原始 wav 文件。如果你降低采样频率,那么节拍和音乐会很慢。

Code:
    [y, fs, nbits]=wavread('stego_lab');
    fs2=11025;
    wavwrite(y,fs2,nbits,'stego2_lab.wav');
    sound(y,fs2,nbits)

你可以听到它,但样本将保持不变。希望能帮助到你。

于 2012-06-24T17:15:52.203 回答
0

有 SOX 工具,它应该可以在这方面为您提供帮助,它几乎可以在任何平台上使用 - http://sox.sourceforge.net

还有 libsndrate、libsamplerate、libsndfile 等,它们也可能有可执行文件。

于 2012-06-24T04:33:15.800 回答
-1

试试这个解决方案

[x,fs] = wavread('infile.wav');
<br>[p,q] = rat(16000/fs)  % to convert to 16k sample rate</br>
<br>y = resample(x,p,q); % signal package require

wavwrite(x,16000,'outfile.wav');
于 2016-05-07T12:24:39.857 回答