目次
どうも、たくチャレ(@takuchalle)です。
仕事で音声信号処理を本格的に使っていきたいので勉強を始めました。
最終的には 3D Audio に繋げられればなと思っています。 そのためには学生の時に苦手としていた数学と本格的に向き合っていかないのがツライところです。
go-wav
以前 wav ファイルの形式を出力するだけのツールを作ったのですが、それを強化する形で育てていこうと思います。
Go
を採用した理由は
- 当時勉強してた
- コマンドラインツールを作りやすそうだった
- マルチプラットフォーム対応が容易
あたりでしょうか。
こんな感じで使うと、引数で渡した wav ファイルのヘッダをパースして表示してくれます。
$ go get github.com/takuyaohashi/wav/cmd/wavparser
$ wavparser sin.wav
Chunk Size: 480036
SubChunk Size: 480000
Audio Format: PCM
Channles: 1
SampleRate: 48000
ByteRate: 96000
BitsPerSample: 16
BlockAlign: 2
wav フォーマットに関してはこのサイトを参考にしました。
LPCM の波形描画ツール
LPCM(リニアPCM)の理解も兼ねて、波形を描画するツールを作りました。
- 1ch
- 48kHz
- 16bit
のサイン波の先頭1048サンプルがこんな感じで描画されます。

波形出力にはgonum.org/v1/plot
を使っています。グラフ生成するツールですが、波形っぽく描画できています。
まだ1つのチャネルしか出せなかったり、ビット長が16bitの LPCM しか出せなかったり不完全ですが、必要に応じて拡張していく予定です。
このツールもgo-wav
に入っていて、次のようにして使えます。
$ go get github.com/takuyaohashi/wav/cmd/wavplot
$ wavplot sin.wav
まとめ
音声信号処理の勉強を始めました宣言でした。
まず手始めにGo
で波形を描画するツールを作ってみました。
今後はサイン波の生成や様々なフィルタなどの信号処理を行っていく予定です。