質問

Matlabに問題があります

スピーチを2秒間録音してから、録音されたサウンドを読んでプロットしたい

コードを使用します

FS = 8000;    
new_wav = wavrecord(2*FS,FS,'int16');
x = wavread(new_wav);
plot(x);

しかし、エラーが表示されます

??? Error using ==> fileparts at 20
Input must be a row vector of characters.

Error in ==> wavread>open_wav at 193
[pat,nam,ext] = fileparts(file);

Error in ==> wavread at 65
[fid,msg] = open_wav(file);

Error in ==> test at 2
x = wavread(new_wav);

正しく記録されたサウンドファイルをプロットしましたが、Matlabを介して新しいファイルを録音したいときは、このエラーが発生します。

FSと「Int16」を変更することで多くの方法を試しましたが、何も起こりません。

ありがとう

役に立ちましたか?

解決

関数 Wavrecord ファイルにデータを書き込むのではなく、データベクトルのみを返します new_wav, 、したがって、この変数はあなたがプロットするべきものです。関数 wavread データを読み取ります ファイルから, 、したがって、文字文字列が入力として期待されます。それがあなたが得ているエラーの原因です。

データを保存する場合 Wavrecord ファイルには、関数を使用する必要があります wavwrite.

他のヒント

name = input('Enter Your Name   ','s');
file = sprintf('%s%s.wav','train - ',name);
input ('You have 2 seconds to a word. Press enter when ready ')
y = wavrecord (2*fs,fs);
wavwrite(y,fs,file);

最後にこれは完全なコードです:)

%声を5秒間記録します。

recObj = audiorecorder;
disp('Start speaking.')
recordblocking(recObj, 3);
disp('End of Recording.');

%録音を再生します。

play(recObj);

%double精度アレイにデータを保存します。

myRecording = getaudiodata(recObj);

%波形をプロットします。

plot(myRecording);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top