当前位置: 技术问答>linux和unix
将16位wav转8位
来源: 互联网 发布时间:2017-05-20
本文导语: 求助各位,谢谢! 现有16位,8k Hz, 单声道wav文件,想转成8位存储格式(线性就可以),其它参数不变。 我的方法是去掉16位中的低字节位,但是得到的输出噪音非常大,不能辨清原有声音。 请问该如何做才能实现...
求助各位,谢谢!
现有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位数据是无符号的整型数,如果不加处理绘制出来的图形是以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
语音处理属于专业问题,不是简单的计算机/软件知识问题了.
不同目的使用不同方法解决方法
学习的话,还是使用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);
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.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。