【问题标题】:MATLAB sound commandMATLAB声音命令
【发布时间】:2014-12-13 09:37:12
【问题描述】:

我必须在 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 秒的相当长的延迟后播放。如何克服呢?

【问题讨论】:

  • y 的第一个3*Fs 值为零,对吧?
  • 3*Fs 命令用于播放声音 3 秒。
  • 然后,您要录制/收听前 3 秒。那么,为什么不写 samples = [1, 3*Fs]; ?

标签: matlab audio


【解决方案1】:

我很想对上面的 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);

【讨论】:

    猜你喜欢
    • 2014-12-05
    • 2013-07-24
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    相关资源
    最近更新 更多