matlab输出pcm格式文件


 

用cooledit打开的话,要用matlab输出为PCM格式。
在matlab中输出pcm格式要怎么做呢?

用法: fwrite(fileid,参数,格式);

为了用cooledit正确地打开,我们应该要用二进制输出
要如何输出和你的源文件有关,请仔细阅读下文。很短的。
我的这个文件的格式是:
在这里插入图片描述
是一个wav文件,
用audioread读取。

filename='10.wav';%这个声音文件在该程序根目录
[signal,fs] = audioread(filename);%读取wav文件,读完是去除了文件头的采样点,而且归一化了,是浮点数。
info=audioinfo(filename)%看这个文件的信息。
whos signal%显示name size bytes class 等等

如果希望看原来的数值,就用
[signal,fs] = audioread(filename,‘native’);
这里的native就是表示按照原格式读取。
在这里插入图片描述
读完之后如何写呢。

%% 保存raw文件
temp=x_speech.*65536/2;%这里是把归一化信号还原,如果是native读取,就不用了/
fid=fopen('D:\lab1\10.pcm','wb');%存为raw,也就是pcm格式
fwrite(fid,temp,'int16');%我这里是按照int16读取的,所以是int16.
%想看自己读完是什么格式,可以在调试的时候点开signal数组看。
audiowrite('D:\lab1\10new.wav', x_speech,fs);%这是存成wav格式的
fclose(fid);

最后可以看到这样的一个文件:
在这里插入图片描述
用cooledit打开的话,是正常的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果语音是杂音,或者乱七八糟的声音,
那么肯定是没有按照二进制输出,请检查
您的matlab代码中
fid=fopen(‘D:\lab1\10.pcm’,‘wb’);%存为raw,也就是pcm格式
fwrite(fid,temp,‘int16’);%我这里是按照int16读取的,所以是int16.
加重部分是否出现了错误。

喜欢的话,或者解决了您的问题的话请帮忙点个赞或者留言,

您的支持是我写文的动力,谢谢!!!😄

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM