IPD( Interactive Pitch Detection ) 交談式基週偵測程式 ===================================================== 作者: 洪茂松、古鴻炎 (國立台灣科技大學 電機系) E-mail: guhy@mail.ntust.edu.tw 請至 ftp://guhy.ee.ntust.edu.tw/ipd 抓取程式。 只支援 Linux 作業系統。 1. 概述 ------- 本程式提供波形(從錄好的wav檔輸入)之顯示,可更改顯示的振幅尺度及時間 尺度,而主要的功能是提供使用者以滑鼠來操作信號裡基週位置(pitch peak)的自動 偵測和半自動偵測,此外也可選取一段波形來播放。 本程式目前只支援 Linux作業系統,使用svgalib繪圖程式庫,在console下繪圖。 我們提供程式的原始碼檔,可由使用者自行編譯(看make_檔)或修改,但要遵從GNU GPL 的自由軟體的版權規定(http://www.gnu.org/copyleft/gpl.html)。 因為本程式把偵測到的基週位置(pitch peak)的資料存放到wav檔的後面,即先以 wav檔格式存信號樣本,再接著存pitch peak的時間位置資料,故在偵測基週及存檔後, 若把此wav檔拿到一般的播放程式下播放,可能最後會聽到奇怪的聲音。 2. 按鍵及按鈕的功能 ------------------- 執行ipd程式後,可看到畫面大致切分成為上下兩部分,以及若干快速鈕, 以下針對各功能作說明: 2.1 上面那一個視窗稱為編輯視窗,可作刪增pitch peak標記、放音、切除部分波形 等處理,波形的振幅、時間軸是可調整尺度(scaling)的。 編輯視窗的4個角落有四個數字,分別表示: 左上角:振幅的縮放等級,操作按鍵q、a、z,倍率是1.414或0.707。 左下角:波形最左邊信號樣本的取樣時間點。 右上角:目前視窗中,最大的振福值。 右下角:時間軸的縮放等級,使用按鍵w、s。 2.2 下面那個視窗,顯示出目前檔案之整體信號的波形,並可用滑鼠加以點選所 要察看的區域,其附近的波形就會顯示在上方的編輯視窗之中,此視窗 的底部有一細長的顯示區,用以顯示編輯視窗的波形相對於整體波形的位置。 2.3 畫面的右下角,有目前所開啟檔案的檔名。 2.4 各個鍵盤按鍵的功用 q:將編輯視窗的振幅顯示尺度回復內定值。 a:增大編輯視窗的信號振幅,增大1.414倍,也可按向上鍵↑。 z:縮小編輯視窗內的信號振幅,也可按向下鍵↓。 j:往左瀏覽信號波形,也可按向左鍵←。 k:往右瀏覽信號波形,也可按向右鍵→。 w:將時間軸作 Zoon in。 s:將時間軸作 Zoon out。 t:使波形上下顛倒。 2.5 標記編輯區域 建立:將滑鼠的游標移到想要標記的的開始點,按住滑鼠的左鍵不放, 左右移動以標記出所要的區域,標記完後放開滑鼠左鍵即可結束 標記,螢幕上以相反顏色之波形顯示。 功用:在標記完成後,可對編輯區域做以下的操作: 按 play 鈕可播放紅色編輯區域的聲音, 按 cut 鈕可切掉綠色編輯區域的波形, 按 inv 鈕可將紅色編輯區域和綠色編輯區域互換顏色, 2.6 基週偵測 自動偵測:按Auto Detect Pitch鈕,即進行自動偵測基週位置的動作。 半自動偵測:當自動偵測的基週不滿意時,可使用半自動偵測, 先按Edit Pitch鈕以進入修改模式,之後可左右移動波形, 若發現到偵測的基週標記不正確時,可在正確的時間位置附近, 按滑鼠左鍵以增加標記,或在錯誤的時間位置附近,按滑鼠右鍵, 以消除該標記。 2.7 共有9個按鈕 Load:讀入wav檔。 Save:儲存wav檔。 Play:播放紅色編輯區裡的信號波形。 Cut: 刪除綠色編輯區裡的信號波形。 Inv: 紅色、綠色編輯區域的切換。 Undo:回復上一個動作(只能回復一次)。 Quit:結束(記得結束前要先存檔,因為只跳出不儲存)。 Auto Detect Pitch:自動偵測Pitch Peak位置。 Edit Pitch:修改Pitch Peak標記(增刪標記)。 3. 使用例子 (開啟一個wav檔,偵測Pitch,然後存檔) Step1:執行 ipd 程式 Step2:按Load,然後填入要編輯之wav檔名。 Step3:按Auto Detect Pitch按鈕,令程式先自動偵測Pitch Peak位置, Step4:按左右方向鍵,察看剛偵測到之基週標記是否有不正確的。 亦可按Mouse之左鍵,將部分波形選取,再按Play鍵播放。 Step5:若找到了不正確之Pitch處,按Edit Pitch鈕,進入修改模式, 然後可在編輯視窗裡,以Mouse之左鍵加入新的基週標記,或以右鍵刪除, 直到滿意為止。 Step6:按Save儲存檔案。 1999/09/11, 2001/09/09