au携帯「Myボイスメモ」の「QCPデータ」

QCPデータとは

au携帯「Myボイスメモ」機能で自分の声を録音することができます。録音した音声はデータ圧縮されて本体の「ボイスフォルダ」に保存されますが、 microSDカードやメール添付で取り出すことができます。このバイナリデータはQualcom Code-Excited Linear Prediction (Qualcom CELP)形式と なっており、ファイル識別子は「.qcp」です。通常は自分の携帯で録音したボイスメモはそのまま聞くだけです。 使い方の例:「帰りに駅前スーパーで牛乳を買うこと」と録音し、後でチェックするなど。私は、ケータイで文章を打ち込むのが 遅いので、思いついたことを吹き込んで忘れないようにしています。

Qualcom PureVoice


このアプリは、qcpデータをPC上で再生したり、作成したりすることができます。Qualcom社のページから無償ダウンロードできます。 http://www.qctconnect.com/products/purevoice_downloads.html

つまり、このアプリを使えば、au携帯でボイスメモを作ってEメールでPCに送って聞いたり、逆にPCでボイスメモを作って携帯に 送って聞くことができます。PureVoiceでqcpファイルをWindows標準のwav形式に変換することもできます。 パケット定額制前提で、沢山の相手に一度に音声メッセージを届けたい時は便利ではないでしょうか?

QCPデータ形式

バイナリダンプして中身を見てみました。qcpファイルはwavファイルに準拠した形式になっており、内部はRIFFチャンク、 fmt(フォーマット)チャンク、vratチャンク、data(データ)チャンクの4部に分かれています。

まずRIFF(Resource Interchange File Format)チャンクです。固定12バイトです。

始めに4バイトのアスキー文字で「RIFF」=(52 49 46 46)が入っています。次はファイルサイズ(4バイト)です。これは全体のファイルサイズから8バイトを引いた大きさが入ります。 この例ではファイル全体の大きさが3464バイトなので、16進に直すと0000 0d88、ここから8(RIFFの4バイトとサイズを格納する場所の4バイト分)を引いて0000 0d80。 これを16ビットリトルエンディアンで入れるので「80 0d 00 00」が入ります。 次にフォームタイプですがこれは4バイトのアスキー文字で「QLCM」=(51 4c 43 4d)が入っています。(qualcomの略か?)

次はフォーマットチャンクです。大抵158バイトです。

始めに4バイトのアスキー文字で「fmt(space)」=(66 6d 74 20)が入っています。次はチャンクサイズ(4バイト)です。 これ以降のチャンクの大きさを示しています。この例の場合、0000 0096なので150バイトになります。 次はmajor version(1バイト)=01, minor(1バイト)=00なので、このファイルがQCELP13KまたはEVRCで圧縮されたことを示します。 次の148バイトはCodec-Infoです。この中にGUID,バージョン,名前(Qcelp 13),平均BPS,パケットサイズ,ブロックサイズ,サンプリングレート, サンプルサイズ,可変レート情報が入っているはずですが、詳細は省きます。 これらの詳細についてはRFC3625をご覧ください。

次はvratチャンクです。固定12バイトです。

始めに4バイトのアスキー文字で「vrat」=(76 72 61 74)が入っています。次はチャンクサイズ(4バイト)です。 これ以降のチャンクの大きさを示しています。この例の場合、0000 0008なので8バイトになります。 次はvar-rate-flagです。0000 0001なので可変レートで音声パケットが入っていることを示します。 次はsize-in-packetsです。音声パケットが何個入っているかを示します。この例では0000 0094なので148個。 1パケットが20ms分の音声を表現していますので、20ms * 148 = 2960ms。約3秒分の音声がコード化されています。

いよいよデータチャンクです。可変長です。

4バイトのアスキー文字で「data」=(64 61 74 61)が入っています。次はチャンクサイズ(4バイト)です。 これ以降のチャンクの大きさを示しています。この例の場合、0000 0ca3なので3235バイトになります。これ以降に4または17または35バイト構成の 音声パケットが入ります。各音声パケットは20msの音声をコード化したもので、始めの1バイトが「レート」を表します。

まず1/8レート(レートオクテット01)を説明します。

先頭バイト(レートオクテット)が01の場合、音声パケットは3バイト(合計4バイト)です。これは20msの無音または雑音を示します。

次にハーフレート(レートオクテット03)を説明します。

先頭バイト(レートオクテット)が03の場合、音声パケットは16バイト(合計17バイト)です。これは20msのハーフレート音声を示します。

次にフルレート(レートオクテット04)を説明します。(2個のパケット)

先頭バイト(レートオクテット)が04の場合、音声パケットは34バイト(合計35バイト)です。これは20msのフルレート音声を示します。

会話の無音部分は1/8レート(レートオクテット01)でコード化されますので、無音部の多い会話では音声ファイルの圧縮率は高く なります。また、圧縮した音声はどうしても音質が劣化してしまいますので、音楽などの録音には不向きです。

Softalkについて

文章を入力して音声を合成してくれる読み上げソフトで「Softalk」というフリーソフトがあります。このソフトの優れた点は、8KHz PCMでwavファイル出力ができることです。 Softalkはこちらです。 Softalkで音声ファイルを作って、PureVoiceでqcp形式に変換すれば、携帯に好きな言葉をしゃべらせることができます。

Softalk + PureVoiceで作った音声ファイルの例:(2009/04/14) 右クリックでセーブしてください。

  • 電話です*3
  • Cメールを受信しました
  • Eメールを受信しました
  • 指定外Eメールを受信しました
  • ニュースフラッシュを受信しました
  • お知らせを受信しました
  • おはようございます。お起きになる時間です。
  • 朝ですよ。起きてください。
  • おはようございます。お起きになる時間です。(男性)
  • おはようございます。お起きになる時間です。(年配女性)
qcpファイルはメール添付すればau携帯に送れます。またau携帯からは直接リンクしていますので、お試しください。QRコードはこちら

  • TOP
  • MyボイスメモQCPデータ


Copyright © ktailab.net. All Rights Reserved. テンプレート by ネットマニア