Re: [問題] MATLAB可以讀5.1聲道的WAV檔嗎已回收
前文有問到為什麼要這樣改就可以讀到檔,就稍微解釋一下。
不過因為牽涉到的東西有點多,就只挑幾個小弟認為比較重要的重點講,
如果有遺漏的地方就請多多包涵囉!
就由一開始的想法說起吧!
其實同樣是 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
08/02 09:50, 1F
→
08/02 09:51, , 2F
08/02 09:51, 2F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章