当前位置:  技术问答>linux和unix

将16位wav转8位

    来源: 互联网  发布时间:2017-05-20

    本文导语:  求助各位,谢谢! 现有16位,8k Hz, 单声道wav文件,想转成8位存储格式(线性就可以),其它参数不变。 我的方法是去掉16位中的低字节位,但是得到的输出噪音非常大,不能辨清原有声音。 请问该如何做才能实现...

求助各位,谢谢!
现有16位,8k Hz, 单声道wav文件,想转成8位存储格式(线性就可以),其它参数不变。
我的方法是去掉16位中的低字节位,但是得到的输出噪音非常大,不能辨清原有声音。
请问该如何做才能实现我想要的结果?先谢谢各位啦!

|
http://blog.csdn.net/mahushen/article/details/8213165
8位数据是无符号的整型数,如果不加处理绘制出来的图形是以0x80为中心上下波动的波形
16位、24位和32位数据都是有符号的整形数,这样的数据绘制的图形是以0值为中心上下波动的波形

所以直接除以是不行了.你将每个值变为 x/256 + 0x80 看看吧..注意自己的目的.更好的效果涉及到更专业的知识了.所以请结合自己的目的寻找最好的解决方法.

|
不知道你要转换的目的是什么? 学习,还是项目开发的一部分,或者是只是为了转换成8位的wav文件?
学习的话,还是使用matlab方便,学习下时域,频域,傅立叶变换,滤波等等,这些我也忘的差不多了.
项目开发的一部分,因为这个要求高,不懂的情况下自己写出来的估计也没法用. 那就找个懂这个的人来做,或者看看有没有开源的音频处理软件.然后提取出来.
只是为了得到转换后的8位音频文件的话,,就用现成的音频处理软件处理下就得到8位的wav文件就行了.
这找了个matlab的简单16->8位的文章http://www.cnblogs.com/sleepy/archive/2011/09/29/2195984.html 

语音处理属于专业问题,不是简单的计算机/软件知识问题了.
不同目的使用不同方法解决方法 

|
这种问题找已经成熟的算法,
想研究就多试难吧,,最近邻插值,双线性插值等等。还有滤波,降噪算法。找个专业的地方看。

|
尝试一下如下:
int sample = 0;
// read 2 bytes (= 16 bits) from the 16 bit file into sample:
fread (&sample, 2, 1, wav_file_16bit);
sample /= 256; // (做归一化处理)
// write 1 byte (= 8 bits) to the 8 bit file:
fwrite (&sample, 1, 1, wav_file_8bit);

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教各位可以用read函数读取.wav音频文件数据吗
  • 各位大侠,在linux用c怎么播放一个wav文件。
  • 请问如何用gstreamer开发wav和mid的播放功能?
  • 用DSP播放WAV格式声音很杂
  • 使用mini2440开发板,Linux系统,录音保存WAV格式,录音61秒,在PC机使用千千静听播放,只有10秒??
  • 请教一下:linux下使用oss api采样好的声音数据如何在vc下播放出来?是需要加一个wav文件头吗?
  • linux 如何录音保存为.wav文件-百分求救
  • 在java applet 中可以播放.au格式以外的媒体文件吗?(.wav等)
  • 谁有女声“或”的.wav语音文件给我发一个,不胜感谢!
  • Java可以播放wav文件吗? 我怎么调用play后一点声音听不到啊?
  • linux下循环播放一段wav文件
  • 谁能帮我用C语言编一个在LINUX下播放WAV文件的程序
  • 我下载了jmf,安装后JMStudio程序能够播放mid与wav,可是在播放avi与mp3有问题?
  • (100分求教)怎样用Applet播放wav文件,怎样去掉Applet的客户端缓存
  • 请教:ARM录音(wav)如何在PC(windows平台)上播放


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,