docomoの音声合成APIの音声データ(Binary)をMacで再生する方法 (2つ)

作ろうスマートフォンコンテンツ : 音声合成API で遊んでみたんですが、この音声合成APIの結果が音声データがBinary (RAW) データなので、そのまま保存しても再生できない。

サンプルのAPIコンソールの結果には以下のメッセージが。

ダウンロードした音声データ(Binary)はメディアプレイヤーでは再生できません。
音声データ(Binary)を再生するには専用の音声再生ツールをご利用いただくか、
適切な音声フォーマットに変換する必要があります。音声データのフォーマットは下記の通りです。
【符号化方式】リニアPCM
【チャネル数】1(モノラル)
【サンプル周波数】16000
【ビット深度】16bit(ビッグエンディアン)

無圧縮だからと拡張子を .wav や .au, .aiff にしてもダメ。
おそらくファイルのヘッダーに音声フォーマットの情報(bitや周波数とか)が必要な模様。

Macでいろいろ試して2つの方法をメモしておく。
事前に音声合成APIの結果を sample.raw と保存しておく。

方法1:Audacity で Rawデータとして読み込む

こちらはソフト上で行えるのでお手軽で簡単。ただ毎回、値を設定するのがちょっと面倒。

使うソフトはフリーウェアのAudacity

「ファイル(F) > 取り込み(I) > ロウ(Raw)データの取り込み」

audacity-raw1

sample.rawを指定して開いたらダイアログが出ますので、サンプリング周波数を「16000」Hz と入力。
他は基本そのままでいいはずです。
audacity-raw2
余談ですが、この画面の「バイト順序:ビックエンディアン」の表記は後のSoxの時に大変助かりました助かりました。

こんな風に開ければ成功。audacity-raw3
後は好きな音声形式に書き出しましょう。

注:mp3に書き出すには追加のライブラリのインストールが必要です。

参考:Audacity(音声ファイル編集)をMP3で書き出せるようにする

方法2:ターミナルのコマンドで変換(Sox)

ターミナルで叩くコマンドを先に書いておきます。

<入力RAWデータ> は音声合成の結果のバイナリデータのです。
sample.rawとかになります。
<出力音声データ> は sample.wav と書けばOKです。

前のオプションを軽く説明しておきます。

-t raw :RAW(バイナリ)データである宣言
-e signed:音声符号化方式の種類の指定
-c 1: モノラル
-r 16k :サンプリングレート(周波数)の指定、16k=16000
-b 16:ビット数 16bit
-B : 音声データの バイト順で”ビッグエンディアン”の指定

ビックエンディアンの指定を入れなかったら凄まじいノイズな音になってました。
AudacityのRawデータ読み込み時のパネルで「バイト順序:ビックエンディアン」に気づけなかったら、もう諦めてたと思います。

Raw形式をWav形式にする・Wav形式をRaw形式にする がとても参考になりました、とても助かりました。

参考サイト)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


*