在录制语音时在 Matlab 中播放 wav

Posted

技术标签:

【中文标题】在录制语音时在 Matlab 中播放 wav【英文标题】:wav playback in Matlab while recording speech 【发布时间】:2014-04-05 17:58:01 【问题描述】:

我在录制 5 秒钟的语音时遇到问题。我已经使用 play() 函数成功播放了,但是一旦我播放了保存在桌面上的 wav 文件,它就只是静默。 这是代码

clc,clear;
% Record your voice for 5 seconds.
%recObj = audiorecorder;
recObj = audiorecorder(96000, 16, 1);
disp('Start speaking.')
recordblocking(recObj,5);

disp('End of Recording.');`enter code here`
% Play back the recording.
play(recObj);
myspeech = getaudiodata(recObj,'double');
wavwrite(double(myspeech),'C://Users//naveen//Desktop//unprocessed')

% Store data in double-precision array.
myRecording = getaudiodata(recObj);

% Plot the samples.
figure,plot(myRecording),title('Original Sound');

【问题讨论】:

我认为wavwrite的默认采样率为8000Hz,你的录音设置为96000Hz,试试wavwrite(double(myspeech),96000,'C:/...snip... recObj = audiorecorder(8000, 16, 1); 非常感谢..我尝试了 wavwrite(double(myspeech),96000,'C:/...snip... 并且成功了。现在我可以清楚地听到录制的声音了。谢谢 ok 生病添加是一个答案! 【参考方案1】:

wavwrite 在没有指定采样率的情况下被调用,默认为 8000Hz

但是,在您拨打 audiorecorder 时,录音设置为 96000Hz

audiorecorder(96000, 16, 1);

将这两个更改为匹配应该可以解决问题,因此将任一调用更改为以下任一调用

recObj = audiorecorder(8000, 16, 1)
wavwrite(double(myspeech),96000,'C:/...snip... 

作为补充说明,我认为myspeech 已经是两倍(如getaudiodata 中所述) 所以wavwrite(myspeech,96000,'C:/...snip... 应该也能正常工作!

【讨论】:

以上是关于在录制语音时在 Matlab 中播放 wav的主要内容,如果未能解决你的问题,请参考以下文章

matlab 实现语音信号重采样和归一化,并播放比对效果

绘制录制声音时的奇怪频率

Python 调用pyaudio库录制以及播放wav音频文件

matlab 使用 audioread sound 读取和播放 wav 文件

如何同时录制使用 AVPlayer 和 wav 文件播放的歌曲?

用于播放/录制音频(.wav、.ogg)的 C++ 多平台库