如何进入wav文件来更改采样率?

时间:2012-06-24 04:24:38

标签: matlab signal-processing wav audio-processing sample-rate

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

我需要这样做的原因是因为当我告诉它打开8k以外的任何其他东西时,MATLAB似乎吓坏了。我需要的MATLAB就是编辑文件,所以采样率实际上并不重要,因为当我完成时我将把它重新放回到wav文件中。因此,我需要能够更改存储采样率的wav文件中的值,或者让MATLAB将其优选的采样率从8k更改为我的文件记录的采样率。

3 个答案:

答案 0 :(得分:3)

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

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

你可以听到,但样品将保持不变。 希望它有所帮助。

答案 1 :(得分:0)

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

还有libsndrate,libsamplerate,libsndfile和其他可能也有可执行文件的内容。

答案 2 :(得分:-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');