[問題] 讀語音檔出來的陣列值與C讀出來的不同

看板AndroidDev作者 (山羊)時間13年前 (2011/08/21 21:42), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/1
最近在測試讀語音檔 利用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

08/21 21:44, , 1F
如有需要 晚點附上程式碼 感謝^ ^
08/21 21:44, 1F

08/22 10:17, , 2F
java裡面的會帶符號 所以會有負的 C的話你會用uint吧
08/22 10:17, 2F

08/22 11:28, , 3F
可是C讀出來也是會有負號
08/22 11:28, 3F
文章代碼(AID): #1EKGis7z (AndroidDev)
文章代碼(AID): #1EKGis7z (AndroidDev)