MATLAB声音命令

MATLAB声音命令,matlab,audio,Matlab,Audio,我必须在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秒后播放。如何克服这一点 我本想对上面的mehmets评论发表评论,因为这几乎是正确的答案——但我只

我必须在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秒后播放。如何克服这一点

我本想对上面的mehmets评论发表评论,因为这几乎是正确的答案——但我只想详细说明一下

我认为您上面的代码会产生错误,因为您试图将从文件'song.mp3'加载的样本与来自同一首歌曲的样本进行索引。如果您想访问声音文件的一部分,即前3秒,那么您应该按照mehmet的正确说明对其进行寻址:

[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);

y的前3*Fs值为零,对吗?3*Fs命令用于播放声音3秒。然后,您要录制/收听前3秒。那么,为什么不编写示例=[1,3*Fs]?