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

wavなどの短い音データなどをandroidで再生させる場合にAudioTrackを使うと素早くできます。ゲームのワンフレーズ等に使えるでしょう。
 
audiotrack 01 - [Android] WAV音声ファイルをAudioTrackで再生する

Android Studio 3.5.3
API 29

 



AudioTrack

 
API level 26から以下のAPIは非推奨になりました。

 
代わりは

とのことです
AudioTrack

 

 

AudioTrack.Builder

 
AudioTrack.Builder を使ってみたいと思います。AudioTrack.Builderにサンプルがありますから、それをそのまま使いましょう。
 

 
そのままといっても、音源に合わせて設定しないといけませんが

 

AudioAttributes

 
適当なwavファイルを res/raw/ 以下に置きます。多くの音声ファイルをフォルダ階層で管理したい場合はassetsに置きます。
ここでは、how_are_you というwavファイルを使ってみます。

AudioAttributes からAudioAttributesを選定します。

  • AudioAttribute:音源は音声なのでこれらを設定
    • setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION)
    • setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
  • AudioFormat:これらは音源ファイルを調べればわかります
    • setEncoding(AudioFormat.ENCODING_PCM_16BIT)
    • setSampleRate(SamplingRate)
    • setChannelMask(AudioFormat.CHANNEL_OUT_MONO)
      • ステレオ/モノラルの設定
 

sampling rate

 
サンプリングレートを調べるには、windowsなどのエクスプローラーでこの音声ファイルのプロパティを見ます。ビットレートが512kbpsであることが分かり、PCMは16bitなので、
512000bps/16bps = 32000 がサンプリングレートとなります。
 
Macの場合はファイルの情報を見ます。
 
audiotrack 02 - [Android] WAV音声ファイルをAudioTrackで再生する

 

サンプルコード

 
以上を踏まえて簡単なテストコードを書いてみました。
 
MainActivity.java

 

レイアウト、画像は特に必要ないですが気分です
activity_main.xml

 
strings.xml

 

サンプル動画

 

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

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

Reference:
AudioTrack

誤字脱字、意味不明で分からにゃイ、
などのご意見はこちらから mailフォーム

ブックマークしておくと便利です このエントリーをはてなブックマークに追加

 

アプリ開発が上達するお勧め

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンラインのプログラミングスクールがいいでしょう。

オンラインスクールは色々ありますが、以下の3つはAndroidが学習できる老舗スクールです。


TECH ACADEMY
Androidアプリコース


こういうものではアプリ作れないと言う意見もありますが、それは結局本人のやる気があるかないかです。やる気があっても独学では突破しにくいところは教えてもらうのが一番早い。


侍エンジニア塾
侍エンジニア塾 無料体験レッスン


とても簡単なことなのに本やネットの画像だけでは分かりにくいことはあります。実際に質問してピンポイントで教えてもらうと、なんだそんなこと、と言うのがけっこうあります。


CodeCamp
~約8,000名の受講生と80社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp




直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。


無料で転職まで
これはアプリ限定ではありませんが無料です
その代わり就職することを前提にしたスクールでエンジニアになって職を得たいのであれば手っ取り早いかもしれません

受講料無料:社会人転職コース




シェアする

  • このエントリーをはてなブックマークに追加

フォローする