MOH(Music on Hold) 應該選用哪種格式?
雖然在 Trixbox/Elastix/PBXinaFlash 幾個常用 IP PBX 套件,預設安裝狀態 MOH 就已經支援 mp3 的音樂檔格式,不過就家用而言,因為線上通話數及分機數都不多,反之,若使用在公司,由於系統在播放 mp3 音樂檔時需要對其作解碼工作,當分機數很多時,系統可能疲於應付這個工作,以致系統可能會有當機的風險,所以建議為了使系統更長時間的穩定運作,將所有 MOH 的音樂檔都改成 WAV 格式,以A.Lang實測結果,同樣長度的 MP3 轉成 WAV 後,其檔案大小與從話筒聽到的音質都沒有感覺有差異。
必要的軟體工具:
- sox 轉錄 wav 檔(已內建在 Trixbox/Elastix 等發行版內)
- lame 或 mpg123 將 MP3 轉成 WAV (需自行安裝,安裝教學請搜尋站內文章)
With lame)
shell>lame --decode old.mp3 new.wav
With mpg123)
shell>mpg123 -w new.wav old.mp3
專用語音檔格式:16 bits 8khz 單音
轉錄指令
shell>sox old.wav -r 8000 -c 1 -w -s new_8khz.wav resample
輸出檔 new_8khz.wav 就是 Asterisk 可使用的語音檔
TIPs
* 如果出現錯誤 sox: invalid option -- w,將指令改成
sox old.wav -r 8000 -c 1 -s new_8khz.wav* 即使檔案格式是 8 bit ,也能轉換成 16 bit。
如果有多個 MP3 檔要作批次轉換,請自行寫 script 即可,以下連結有參考的範例。
在 Shell 模式完成)
// 將 *.wav 更名為 *.orig for fname in $(ls *.wav);do echo -n "mv $fname ->"; echo $(echo $fname |sed 's/.wav/.orig/'); mv $fname $(echo $fname|sed 's/.wav/.orig/');done // 將 *.orig.wav 轉檔為 *.wav for fname in $(ls *.orig);do echo "-> sox $fname -r 8000 -c 1 -w -s $(echo $fname|sed 's/.orig/.wav/') resample"; sox $fname -r 8000 -c 1 -w -s $(echo $fname|sed 's/.orig/.wav/') resample; done // 刪除 *.orig rm -f *.orig
Digium 官方提供線上的語音檔格式轉換
file 指令
$ file MSG_01.wav MSG_01.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 8000 Hz
sox 指令
$ sox -V MSG_01.wav -n sox: SoX v14.2.0 sox formats: detected file format type `wav' Input File : 'MSG_01.wav' Channels : 1 Sample Rate : 8000 Precision : 16-bit Duration : 00:00:09.15 = 73211 samples ~ 686.353 CDDA sectors Sample Encoding: 16-bit Signed Integer PCM Endian Type : little Reverse Nibbles: no Reverse Bits : no Output File : '' (null) Channels : 1 Sample Rate : 8000 Precision : 16-bit Duration : 00:00:09.15 = 73211 samples ~ 686.353 CDDA sectors sox sox: effects chain: input 8000Hz 1 channels 16 bits (multi) sox sox: effects chain: output 8000Hz 1 channels 16 bits (multi)
Images 0 | ||
---|---|---|
No images to display in the gallery. |