Toolkit)という音声信号処理のツールの使い方を紹介していきます。SPTKには、音声を分析するための豊富なコマンドが約120個も提供されています。今までPythonで窓関数、FFT、MFCC、LPCなどを苦労して実装してきました(Pythonで音声信号処理)が、これらの代表的な音声処理は、SPTKで提供されているコマンドを組み合わせるだけで簡単に実行できます。SPTKには、分厚いマニュアルと豊富なサンプル集がついているのでそれをベースに少しずつ使い方を整理していきたいと思います。今後の音声プロジェクトでも使用していく予定です。インストール主にLinuxマシンが対象のツールなのでソースからのコンパイルが必要。WindowsならCygwinやMinGWが必要でした。installでSPTKのコマンド群がインストールされます。Lion)環境では、なにやらdeltaコマンドのところでコンパイルエラーが出てmakeに失敗します。調べたところXcode4からgccがLLVM版とやらに置き換わっているのが原因らしい。bin/deltaのMakefileのCC=gccをCC=clangに置き換えてやるとうまくコンパイルできました。各コマンドを詳細に解説した200ページを超す分厚いマニュアル(SPTKref-3.5.pdf)サンプル集(SPTKexamples-3.5.pdf)サンプル音声(SPTKexamples-data-3.5.tar.gz)も手に入るので合わせてダウンロード。いうわけで以後、サンプル集に沿って簡単なコマンドからマスターしていきます。波形のダンプ、プロット、再生です。波形データのダンプSPTKのサイトからダウンロードしたSPTKexamples-data-3.5.tar.gzを解凍するとdata.shortという音声ファイルが入っているのでこのファイルを使っていきます。このファイルは、いわゆるrawファイルというやつで音声波形の振幅(short型、-32768〜32767)がそのまま入っています。Windowsでよく使うwavからヘッダ部分を除いたものです(このファイルはwavと違って一般的なソフトでは再生できません。後で再生方法を示します。)音声波形の振幅は、dmpコマンドで出力できます。-2...1列目は、サンプル番号で2つめが振幅。コマンドの+sは振幅がshort型であることを意味します。使われる16bitで量子化された音声はshort型(2byte)で-32678から32767の整数値で表せます。波形データのプロットダンプデータではどんな波形かわからないのでgwaveコマンドとxgrコマンドで波形をプロットしてみます。xgrMacだとこんなグラフが出てきました。XWindowsが入っていないWindowsでは何らかのXサーバ*1を入れないとgwaveコマンドは使えませんでした。代わりにPythonで描画するスクリプトを書くと下のようになります。2バイト(short)ずつバイナリを読み込んでstruct.unpack()で整数値に変換してからmatplotlibでプロットしています。data.floatとするとこんなグラフが出てきます。XWindowsに比べるとmatplotlibのグラフの方がきれいかな。gnuplotで波形描画(2013/3/9)gnuplotを使うとダンプデータを簡単に描画できます。手軽に波形を確認できるのでオススメの方法です。波形に限らずdmpコマンドで出力したテキストデータなら同じように描画できます。波形を見ても何て言っているのかわからないので再生してみます。rawファイルの再生は、daというコマンドなのですが、これはWindowsでもMacでも使えませんでした*2。rawファイルの再生はいくつか方法がありますが、簡単なのはWaveSurferというソフトです。このソフトだとrawファイルが開けます。rawファイルは、wavと違ってサンプリング周波数や量子化ビット数、チャンネル数、バイトオーダなどのヘッダ情報がまったくないので自分で指定する必要があります。再生してみると、、、男性の声で「青い植木鉢」だそうです。えっ、何それ(笑)SPTKのraw2wavというコマンドを使うとrawをwavに変換できます。raw2wavの引数にサンプリング周波数などを与えますが、今回はデフォルトでOK。wavなら普通のソフトでも再生できます。data.short最後にPythonのpyaudioというライブラリを使って、rawファイルを再生するスクリプトを書いてみます。rawファイルのデータを1024バイトずつ読み込んで音声ストリームに流しているだけです。data.shortサンプリング周波数、チャンネル数、量子化ビット数などは決めうちなので引数から与えるように拡張するといいかもしれません。次回は音声波形のクリッピングを試してみます。FreeBSDと書いてあります。Linuxでも/dev/dspがないUbuntuでは再生できませんでした。(7)(2013/1/19)の続き。(6)(2012/8/5)の続き。(4)(2012/7/16)の続き。(3)(2012/7/7)の続き。»プロフィールid:aidiary人工知能とその関連分野に興味があります。)はてなブログをはじめよう!aidiaryさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。