我在MATLAB中提取了一个wav文件,我可以看到它的采样率。我需要做的就是改变这个1号码。文件中的其他所有内容都将保持不变。 (产生的声音将以不同的速度播放,但会有相同的样本数据阵列。)
我需要这样做的原因是因为当我告诉它打开8k以外的任何其他东西时,MATLAB似乎吓坏了。我需要的MATLAB就是编辑文件,所以采样率实际上并不重要,因为当我完成时我将把它重新放回到wav文件中。因此,我需要能够更改存储采样率的wav文件中的值,或者让MATLAB将其优选的采样率从8k更改为我的文件记录的采样率。
答案 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');