作者johnny1276 (山羊)
看板AndroidDev
标题[问题] 读语音档出来的阵列值与C读出来的不同
时间Sun Aug 21 21:42:09 2011
最近在测试读语音档
利用DataInputStream来读Short型态的阵列出来
我就先测试将阵列值乘以二(变大声)、除以二(变小声)
乘以二出来的语音真的会变大声
但是除以二的值却会变成杂讯干扰很大的语音
照理来说应该音量会变一半才对,也不会杂讯变大
於是我利用MATLAB和C++来读相同的语音档
利用fopen和fread来读取 (16bit) Short语音阵列
出来的值和JAVA出来的差异极大
我也试过换一个不同的API来读取
ByteArrayOutputStream来读取
先存成byte阵列 再转换
出来的值也与原本的DataInputStream出来的阵列值相同
想问问这样算是正常吗
还是我读取方法有错了吗
实在不懂为何除以二会变成杂讯干扰的语音
写得有点落落长@@
麻烦大家帮小弟我解答了
感激不尽!!!!! ^ ^
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.114.198.76
※ johnny1276:转录至看板 java 08/21 21:42
1F:→ johnny1276:如有需要 晚点附上程式码 感谢^ ^ 08/21 21:44
2F:推 gpc:java里面的会带符号 所以会有负的 C的话你会用uint吧 08/22 10:17
3F:→ johnny1276:可是C读出来也是会有负号 08/22 11:28