我正在尝试录制语音,然后从用户提供的时间索引中播放。问题是此代码未播放录制的语音并提供“无效的播放选择”错误。我究竟做错了什么?这是代码:
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);
此致
答案 0 :(得分:0)
从等式
(UserPassedTimeIndex/TotalPlayTime)*length(Magnitude),
UserPassedTimeIndex必须以秒为单位,且小于音频的总录制时间(否则会出错)。
通过TotalPlayTime的定义,这个等式简单地等于
UserPassedTimeIndex * SampleRate
请注意,这是将样本中的时间(以秒为单位)转换为时间。由于MATLAB的索引是基于1的,因此您还需要添加1以在给定的开始时间内将样本的索引设置为 start 。