音声データ(waveファイル)の基礎知識
ここでは音声データを扱う上で知っておくべき用語や知識を整理します。
基本的な用語
-
音源
解析・処理対象となるデータを指す。基本的には全てバイナリデータである。
-
静的な音源
ファイルに保存された非リアルタイム 音源のこと。(wav、mp3、rawなど)
ここでは主にwavファイルを使用して解析を行う。
-
動的な音源
マイクなどのセンサから入力されたリアルタイム 音源のこと。
-
ストリーム
センサなどによって生成される継続的なデータのことである。または、スピーカなどに与えるための継続的なデータを指す。
これらのデータはレコード、またはチャンク単位、もしくはスライドした時間窓で連続的に処理する。データストリームとも呼ぶ。
パラメータに関する用語
- チャンク
音源から1回読み込むときのデータサイズ。またはRIFF形式におけるデータの論理的な単位のこと。
2のn乗とする場合が多い。
- サンプリング周波数
1秒間にデータを取得するデータ点数を決める値である。
音声データに記録できる音源の周波数はサンプリング周波数の2分の1の値までとなっている。
(標本化定理で調べると詳しく理解できます。ここでは説明を省きます。)
- フレーム数
Pythonモジュール上ではバイナリデータの個数を表す値である。
他分野(映像関連など)では用語の使われ方が違うので注意が必要である。
wavデータの構造について
音声データを自身で記録・処理しようとすると、多くの場合wav形式を採用することになる。そこで、ここではwavのデータ構造について簡単に学ぶ。
wavはWindows標準の音声データファイルである。
wavはRIFF形式で作られており、wavを理解するためにはこのRIFFを理解する必要がある。
- RIFF形式とは
RIFF(Resouce Interchange File Format)形式とは、画像や音声などのデータを1つのファイルに格納するための共通フォーマットである。RIFFにはチャンクと呼ばれる考え方があり、データの論理的な単位とされる。wavファイルはチャンクを1つにまとめた集合体である。
チャンクの例)
- wavファイルのデータフォーマット
wavファイルの基本構造は上述のRIFF形式でRIFFヘッダ、fmtチャンク、dataチャンクの3つから構成される。そこに必要に応じてfactチャンク、cueチャンクなどが追加される。
- RIFFヘッダ
該当ファイルが「wavファイル」であることを示す。
- fmtチャンク
wavファイルの設定情報が保存されている。サンプリング周波数、チャネル数、音声フォーマットなどの情報が保存されている。
- dataチャンク
音声の波形データが保存されている。
本体部分である。