- サウンドデータの再生と録音
任意の標本化周波数/16bit量子化(short integer)されたデジタル・サウンドデータを再生する(DA変換する)プログラムが下記にある。必要に応じて使用せよ。
sndplay バイナリのダウンロード
% ./sndplay -f 16000 xxxx.dat
標本化周波数 16000 Hz のサウンドデータ xxxx.dat の DA 変換(再生)する。
% chmod 755 ./sndplay と,明示的に,excecutable にする必要があるかもしれない。
- 任意の標本周波数/16bit量子化(short integer)されたデジタル・サウンドデータを再生する(DA変換する)場合は,sox (SOund eXchanger) というパッケージをインストールして使ってください。
- sox のインストール(apt get)の仕方
- % sudo apt-get install sox
- パスワード入力を求められますので,対応して下さい。
- sox をインストールすると,play, rec というコマンドが使えるようになるはずです。
- sox を使った再生(play)方法
- % play -t raw -c 1 -e signed-integer -b 16 -r 16000 xxxxxx.dat
- -t : data type を指定する。raw データ。ヘッダは付いていない。
- -c : チャネル数。1
- -e : encoding の方法を指定。ここでは,普通の signed-integer を指定。
- -b : 1サンプル当たりのビット数。16
- -r : サンプリング周波数(sampling rate)。16000(=16k)。8k, 48kにしたい場合は,そのように指定する。
- ファイル名を最後に指定する。ここでは,xxxxxx.dat というファイル。
アナログサウンドデータ(マイク入力)を任意の標本化周波数/16bit量子化(short integer)で録音する(AD変換する)プログラムが下記にある。必要に応じて使用せよ。
sndrecord バイナリのダウンロード
% ./sndrecord -f 16000 -t 10 xxxx.dat
マイク(アナログ)入力より,標本化周波数 16000 Hz で 10 秒間 AD 変換(録音)し,ファイル xxxx.dat に保存する。
% chmod 755 ./sndrecord と,明示的に,excecutable にする必要があるかもしれない。
- マイク入力された音・音声を任意の標本周波数/16bit量子化(short integer)で録音する(AD変換する)場合は,下記のようにすればよい。
- soxを使った録音(record)の仕方
- % rec -t raw -c 1 -e signed-integer -b 16 -r 16000 xxxxxx.dat
- 配布している laptop PC は,アナログのマイク入力端子がない。 USBポートに差す USB オーディオアダプタを「2個/机」配布する。それを使って,インターネット電話を作って欲しい。laptop PC 内蔵マイクだとノイズをかなり拾ってしまう。なお,音声入力が上手く行かない場合は,ヘッドセットを交換してみるのも手である。
sndplay & sndrecord のソースファイルのダウンロード
ちなみに,下記で提供する xxxx.dat というサウンドデータは全て sndplay で再生できる。また,xxxx.wav はクリックするだけで,再生できるはずである。
- マちなみに,下記で提供する xxxxxx.dat というサウンドデータは全て play で再生できる。また,xxxxxx.wav はクリックだけで再生できるはずである。
- DFTを用いた対数振幅スペクトル特性の描画
- 穴埋めソースファイルは,ここ。
- % DFT sound.dat 32382 512
- 頭の 32382 サンプル(short integer)をスキップして,次の512サンプルをDFTする。
- 対数振幅スペクトルの情報は標準出力にprintf()される。詳細はソースを見よ。
- 各音源のどこの部分を分析するのか?
- guitar(wav)
- 9.467[sec] からの 32[msec] を分析する。
- 最後に比較的大きな音が三つあるが,その一つ目に相当。
- mbira(wav)
- 0.158[sec] からの 32[msec] を分析する。
- 最初の音である。
- speech(wav)
- 0.984[sec] からの 32[msec] を分析する。
- 最初の「本日は」の「は」の「あ」に相当。
- なお,xxx[sec] が何サンプル目に相当するのか,は,当然標本周波数に依存する。
- ちなみに,32[msec]というのは,サンプル数で言えば,256(8kHz),512(16kHz),1536(48kHz)である。
- 対数振幅スペクトル例
- インパルス応答を使った反響(エコー)効果の演出/FIRフィルタ
- まずは,反響(エコー)効果についての説明として,これを読むべし。
- 全ての音は,反響(エコー)によって脚色されていることを学ぶべし。
- 本実験でも,例えば,こんなインパルス応答を使って脚色する。
- 各種インパルス応答のダウンロード
- room = 普通の部屋,hall = ホール,church = 大聖堂(?)
- _16k.dat, _48k.dat : 各標本化周波数でのインパルス応答,short integerの配列
- _16k_double.dat, _48k_double.dat : 各標本化周波数でのインパルス応答,doubleの配列。実験ではこちらを使うべし。_16k.dat, _48k.dat のデータに対して,パワーの正規化をして得られたデータ。結果が浮動小数点になるため double 化している。
- 穴埋めソースファイルは,ここ。
- ちなみに,プログラムが完成すれば,これが,こういうふうに,なる。君の演説が,オバマ大統領顔負けの,大聖堂での演説に早変わりする? それとも銭湯の演説会?
- guitar, mbira, speech は通常の部屋で収録されている。つまり,エコーがもともとかかっている。本当に無響室で収録された音に対して脚色したい学生は,これ,を使うと良いだろう。
- ちなみに・・・
- 簡易サウンドエフェクタの方は,穴埋めソースは,無い。
- なお,穴埋めソースで使っている,標準関数についてチェックしたい学生は,ここ,かな。
- 選択課題4.5の検討課題であるが,フィルタの対数振幅特性は,インパルス応答の時間長から適切な窓幅を設定し,インパルス応答のスペクトルを求めることになる。例えば,church (16kHz版) のインパルス応答を1秒まで考慮し(16,000ポイント),これの対数振幅特性を DFT で求めたものが,これ,である。
- ただ,注意して欲しいのは,こうやって求めた DFT スペクトルは,実際にはどういう波形(信号)のスペクトルなのか,ということである。「対象にした0〜1秒までの church インパルス応答」としか答えられないようなら,もう一度信号解析基礎や信号処理工学のノートを開くことを強く勧める。例えば,2秒=32,000ポイントでスペクトルを求めると,1秒の時とどう変わるのか,とか,そういうことを考察対象として欲しいなぁぁ。