使用audioread或同等产品在特定时间戳中播放音频

时间:2016-10-27 23:16:22

标签: matlab audio

我正在使用audioread播放音频,现在我想在不同的时间戳播放音轨。到目前为止我所拥有的是:

[testSound,Fs] = audioread('test.wav');
sound(testSound,Fs);

是否有可能以某种方式指定音轨应从例如第二个5开始?更具体地说,我的音频样本test.wav是45秒长,而不是从头开始播放声音,我想定义它应该开始播放的位置。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

你可以提取出一部分信号,使你从5秒开始,然后播放。简单地说,您将以5倍的采样率开始采样作为起始索引一直到结束然后播放声音:

[testSound,Fs] = audioread('test.wav'); % From your code
beginSecond = 5; % Define where you want to start playing
beginIndex = floor(beginSecond*Fs); % Find beginning index of where to sample
soundExtract = testSound(beginIndex:end, :); % Extract the signal
sound(soundExtract, Fs); % Play the sound

或者,由于您正在使用audioread,因此您实际上可以指定从哪里开始对声音进行采样。您将使用上面相同的逻辑,并指定从样本中采样声音的开始和结束位置。但是,您需要知道首先采样率是多少,因此您必须两次调用audioread来获取采样率,然后最后调用信号本身:

beginSecond = 5; % Define where you want to start playing
[~, Fs] = audioread('test.wav'); % Get sampling rate
beginIndex = floor(beginSecond*Fs); % Find beginning index of where to sample
[soundExtract, ~] = audioread('test.wav', [beginIndex inf]); % Extract out the signal from the starting point to the end of the file
sound(soundExtract, Fs); % Play the sound