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 に答える