我在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);

%将数据存储在双精度阵列中。

myRecording = getaudiodata(recObj);

%绘制波形。

plot(myRecording);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top