Re: [問題] MATLAB可以讀5.1聲道的WAV檔嗎已回收

看板MATLAB作者 (幻無影)時間16年前 (2009/08/02 06:07), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串3/3 (看更多)
前文有問到為什麼要這樣改就可以讀到檔,就稍微解釋一下。 不過因為牽涉到的東西有點多,就只挑幾個小弟認為比較重要的重點講, 如果有遺漏的地方就請多多包涵囉! 就由一開始的想法說起吧! 其實同樣是 WAVE 檔,也有可能有很多種格式,本來想跟原 PO 確認, 不過丟水球原 PO 不在。就先假設是最簡單的狀況,也就是要讀的檔格式是 MATLAB 原本就支援的 PCM 檔。(因為如果是其他壓縮過的格式, 自己寫解碼會要命 XD,反正聲音檔格式可以互轉,反正 PCM 沒壓縮, 除非情況太特殊,不然轉換過來也不會有失真問題) 接下來就是找個測試檔讀看看會有什麼事情發生。 當初用的是下面這個網頁的 Multi-Channel Examples http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/Samples.html 確認過他是 PCM 格式(可以用 MediaInfo 看)之後,丟進去讀。 記得好像會出現 Format #65534 之類的錯誤訊息吧! 總之,他認不得這個檔案,要解釋為什麼認不得之前, 就要先介紹一下 WAVE 檔的格式 http://ccrma.stanford.edu/courses/422/projects/WaveFormat/ 簡單的說,WAVE 檔開頭會有一串類似自我介紹的東西,而這個多聲道檔 Data 的格式雖然是 PCM,但在 AudioFormat 這欄跟傳統 PCM 有些小差別 以往都是 1,可是這個多聲道檔是 65534,所以 MATLAB 認不出他來了。 我們所做的修改,就是讓 MATLAB 看到 AudioFormat 這欄是 65534 的檔 的時候一樣照傳統方式去處理。如此一來就可以讀出我們所要的資料了! 附註 當然實際做的時候還必須考慮他原本讀檔的程式是 m 檔還是編譯過的內部函數 還有程式是否原本就有考慮到 Multi-Channel 等等,很幸運地,他內部程式 原本就寫得夠完整,所以我們才能這麼輕鬆。不過因為篇幅跟時間的關係, 這段的解釋就跳過了... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.58.102.177

08/02 09:50, , 1F
格式上我也是PCM...所以OK~~
08/02 09:50, 1F

08/02 09:51, , 2F
感謝你的回答~~相當的清楚~~~感恩阿~~~~
08/02 09:51, 2F
文章代碼(AID): #1ATBo44T (MATLAB)
文章代碼(AID): #1ATBo44T (MATLAB)