2014-12-13 85 views
0

我必须在MATLAB中添加声音片段的一部分。 我使用的代码是:MATLAB声音命令

[y, Fs] = audioread('song.mp3'); 
samples = [y,3*Fs]; 
[y,Fs] = audioread('song.mp3', samples); 
sound(y, Fs) 

我的问题是,在samples =[y,3*Fs]我拿什么来代替y写?声音播放,但它播放后2-3秒的相当长的时间。如何克服?

+0

'y'的第一个'3 * Fs'值为零,对不对? – mehmet 2014-12-13 10:15:04

+0

3 * Fs命令用于播放声音3秒钟。 – Manahil 2014-12-13 11:11:00

+1

然后,你想录制/听第3秒。那么,为什么不写样本= [1,3 * Fs]; ? – mehmet 2014-12-13 11:17:07

回答

0

我希望评论上面的mehmets评论,因为这几乎是正确的答案 - 但我只是稍微详细一点。

我想上面的代码会产生一个错误,因为你试图用来自同一首歌曲的样本从文件'song.mp3'加载的样本索引。如果您想访问音效档的一部分(即第一3秒),那么你应该(作为穆罕默德正确地指出)地址它是这样:

[y, Fs] = audioread([pwd '\sounds\pn.wav']); 
[y, Fs] = audioread([pwd '\sounds\pn.wav'], [1, 3*Fs]); 
sound(y, Fs) 

然而,更优雅的方式,以避免加载文件两次,可能是在播放过程中索引/剪切声音文件:

[y, Fs] = audioread([pwd '\sounds\pn.wav']); 
sound(y(1:3*Fs,:), Fs);