はじめに
ニューラルボコーダの勉強を通して振幅スペクトログラムから音声波形を出力するものをボコーダだと自分は思っていた。
そのため、Griffin-Limアルゴリズムもボコーダだと思っていたけど、そうじゃなったことを教授に教えてもらったという話。
そこから、「ボコーダとは何か」について勉強した備忘録
ボコーダとは
ボコーダとは
音声波形を何らかの形でパラメータにしてそのパラメータを元に音声波形を復号化する枠組み
である。
つまり・・
音声波形をパラメータに変えるもの
+
パラメータに変えられた音声を音声波形にするもの
がボコーダになる。
Guriffin-Limアルゴリズムはメルスペクトログラムという「パラメータに変えられた音声を音声波形」にするが「音声をパラメータに変えるもの」ではない。つまりGriffin‐Limアルゴリズムはボコーダではないということになる。
この音声波形をパラメータに変えるものをエンコーダ、パラメータを音声波形に変えるものをデコーダという。
ボコーダの必要性
音声の伝達のためのボコーダ
例として、離島における緊急音声信号の送受信を考えてみる。
緊急性を要する時に音声が高品質かどうかは関係なく、音声が聞きとれれば十分。
音声は、
「秒数×サンプリングレート×量子化ビット数・符号化形式×チャンネル数」
のデータを取り扱うためデータとして大きいものになります。
そのため、今回の例では聞き取れるレベルでの音声の圧縮、並びに圧縮された音声の復元が重要になります。
この一連の流れをボコーダが担います。
音声波形をおもしろおかしくかえるボコーダ
(1)の文献では、ボコーダについて・・
「音声をおもしろおかしくかえるもの」
として紹介しています。
音声の加工には何かしらの方法で音声をモデル化する必要がある。代表的な例にソース・フィルタモデルがあります。
ソース・フィルタモデルは音声を声帯振動による有声音と肺からの呼気流による無声音の2つにモデル化します。
音声を2つのモデルに分類することで声の高さを変えたりすることができ、「音声をおもしろおかしくかえるもの」としてボコーダが使える。このモデルをチャンネルボコーダといいます。
他にもチャンネルボコーダのような音声を再現する2つのモデル化ではなく、音声をフーリエ変換し得た波形を加工するフェーズボコーダもあります。こちらも三角関数ごとに分割しているため得た三角関数のを加工してあげることで「音声をおもしろおかしくかえるもの」としてボコーダが使えます。
ニューラルボコーダとボコーダ
ニューラルボコーダは(2)の論文で
「音響特徴量から対応する音声を出力する」と述べられています。
つまりニューラルボコーダは・・
「パラメータに変えられた音声を音声波形にするもの」ではあるが「音声波形をパラメータに変えるもの」ではないためボコーダの要件を満たさないことがわかります。
このことからニューラルボコーダはボコーダではないといえる・・と考えました。
参考
(1) 小坂直敏.サウンドエフェクトのプログラミング.オーム社.2012
https://shop.ohmsha.co.jp/shopdetail/000000001934/
(2)松原圭亮、岡本拓磨、高島遼一、滝口哲也、戸田智基、志賀芳則、河井恒.Full-band LPCNet:48kHz リアルタイムニューラルボコーダ.日本音響学会講演論文集.2020
http://www.me.cs.scitec.kobe-u.ac.jp/~takigu/pdf/2020/2-2-1.pdf
山本 龍一、 高道 慎之介.pythonで学ぶ音声合成.インプレス.2021
https://book.impress.co.jp/books/1120101073