2

私は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' を変更してさまざまな方法を試しましたが、何も起こりません。

ありがとう

4

3 に答える 3

2

関数WAVRECORDはファイルにデータを書き込まず、 のデータ ベクトルを返すだけnew_wavなので、この変数をプロットする必要があります。関数WAVREADはファイルからデータを読み取るため、入力として文字列が必要です。それがあなたが得ているエラーの原因です。

WAVRECORDからファイルにデータを保存する場合は、関数WAVWRITEを使用する必要があります。

于 2010-12-22T18:56:38.410 に答える
0
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);
于 2012-05-09T12:11:16.517 に答える
0

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

%あなたの声を5秒間録音します。

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

%録音を再生します。

play(recObj);

%データを倍精度配列に格納します。

myRecording = getaudiodata(recObj);

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

plot(myRecording);
于 2013-03-21T04:58:56.373 に答える