[Android] WAV音声ファイルをAudioTrackで再生する

wavなどで短い音データなどをandroidで再生させる場合にAudioTrackを使うと素早くできます。ゲームのワンフレーズ等に使えるでしょう。

jennifer

Android Studio 2.1.3
Android 7.0

 

sponsored link

AudioTrack

 
wavファイルを res/raw/ 以下に置きます。多くの音声ファイルをフォルダ階層で管理したい場合はassetsに置きます。
 
ここでは、how_are_you というwavファイルを使いますが、AudioTrackを使う上でサンプリングレートが必要になります。

サンプリングレートを調べるには、windowsなどのエクスプローラーでこの音声ファイルのプロパティを見ます。ビットレートが512kbpsであることが分かり、PCMは16bitなので
512000bps/16bps = 32000 がサンプリングレートとなります。

因みに、サンプリングレートを変えるとヘリウムボイス等のように声質が変わってしまいます。それはそれで面白いのですが

閑話休題

MainActivity.java

 

activity_main.xml

 

audioTrack.write(wavData, 44, wavData.length-44);
としているのは、wavファイルのヘッダ部分が44byteありそれがノイズ、プチッ音になるのを回避するためです。

それと注意しないといけないのが、このまま使うと他の処理、画面が止まったりします。それが都合が悪い場合はThreadを使って非同期にするなど対応が非必要です。

Reference:
AudioTrack