0

我正在尝试录制语音,然后从用户提供的时间索引播放。问题是这段代码没有播放录制的声音并给出“无效的播放选择”错误。我究竟做错了什么?这是代码:

function musiceditor(UserPassedTimeIndex)

Fs=44110;

y = wavrecord(5*Fs,Fs,'int16');

wavwrite(y,'Alfred.wav');

[Magnitude,SampleRate,x]=wavread('Alfred.wav');

AudioPlayer=audioplayer(Magnitude,SampleRate,x);

TotalPlayTime= length(Magnitude)/SampleRate;

Index= round((UserPassedTimeIndex/TotalPlayTime)*length(Magnitude));

play(AudioPlayer,Index);

问候

4

1 回答 1

0

从方程

(UserPassedTimeIndex/TotalPlayTime)*length(Magnitude), 

UserPassedTimeIndex 必须以秒为单位,并且小于音频的总录制时间(否则会出错)。

根据 TotalPlayTime 的定义,这个等式简单地等价于

UserPassedTimeIndex * SampleRate

请注意,这将以秒为单位的时间转换为以样本为单位的时间。因为 MATLAB 的索引是从 1 开始的,所以您还需要添加 1 来获取给定开始时间的样本索引

于 2012-11-22T13:41:29.870 回答