人工知能に関する断創録スマートフォン用の表示で見るスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。ロボティクス、生物学などに興味を持っています。このブログでは人工知能のさまざまな分野について調査したことをまとめています。Learning、Kerasに関する記事が多いです。(2)(2012/7/4)の続き。extraction)を試してみます。ピッチとは声の高さのことで、基本周波数やF0とも呼ばれます*1。ピッチは、人間の発声におけるアクセント、イントネーション、感情表出などとも密接に関係しているため音声合成において非常に重要なパラメータになっています。いうわけでSPTKのピッチ抽出コマンドpitchを使って、音声からピッチを抽出してみました。503文の音声データです。本物は有料のようですが、同じテキストで再度録音し直して無償公開しているデータみたい。a01.adからj53.adまで503個のrawファイルが含まれています。(1)(2012/7/1)で作ったplay.pyコマンドで再生してみました。壊れるかと思った(笑)波形を確かめてみると、何かおかしい。サンプリング周波数(16000Hz)も量子化ビット数(16bit)もチャンネル数(モノラル)もあっていて、WaveSurferでは正常に再生できるのになぜ?と悩んでいたが、どうやらエンディアンの違いだと気づいた・・・このrawファイルはビッグエンディアンだった。いうわけでSPTKのswabコマンドですべてリトルエンディアンに変換した。target))これで音声が聞ける。a01.ad「あらゆる現実をすべて自分の方へねじ曲げたのだ。」えっ、何それ(笑)他のも聞いてみたけど脈絡のない変な文章が多い。調べてみると音声界隈では有名な文章らしい(あらゆる現実の話)。ピッチ抽出というわけでこの音声からピッチを抽出してみよう。探索する最大周波数(240Hz)ピッチ抽出のアルゴリズムは、snackとswipeというのが実装されていました。(PDF)音楽でも使えるのかな?ちょっと興味ある。今回は男声だから探索の範囲が60Hzから240Hzでよかったけれど、女声の場合だともっと高くしないとダメかな。60Hzから240Hzってけっこう低い声だ。実行すると下のようなピッチ軌跡のグラフが表示されました。XWindowsの描画はいまいち華がないので、matplotlibでも描画してみました。音声波形をプロットするときは、2バイト(short)ずつ読み込んでましたが、ピッチファイルは浮動小数点のバイナリがずらずら入っているので4バイト(float)ずつ読み込んでます。(Hz)&quot;)show()横軸の単位はフレームになります。pitchコマンドでは、重複なしで80サンプル(1フレーム)ごとフレームシフトしながらピッチ抽出しているようです。元の音声が60670サンプルあったので、最終的に得られるピッチの数は60670/80=758となります。ピッチファイルをdmpするとちゃんと758フレームあることが確認できました。あと、ピッチが0のところは無声音の区間ですね。ピッチは有声音からしか得られないので。きれいにとれているみたいです。503文をランダムにツイートするボットを発見しました。@ATR503_bot。縦軸をf0(Hz)と書いてしまったのですが、これは誤りです。pitchコマンドに何もオプションを指定しないとサンプリング周波数をHzで割った値(pitch)が出力されます。1というオプションが必要です。ピッチとF0って同じ意味だと思ってたけど違うのかな?SPTKのpitchのソースコードを見るとわかります。}*1:厳密には、基本周波数は物理量、ピッチは心理量なので異なる概念とのことです(参考:ピッチと基本周波数はどう違うのですか?)。音声波形の切り出し»プロフィールid:aidiary人工知能とその関連分野に興味があります。Blog|ブログを報告する。