IBM Cloud Docs
音声フォーマットの使用

音声フォーマットの使用

IBM Watson® Text to Speech サービスは、いくつかの一般的な音声フォーマット (または MIME タイプ) で合成音声を返すことができます。 サポートされるすべてのフォーマットについては、サポートされる音声フォーマットを参照してください。

このサービスを最大限に活用するには、サービスから返される音声のサンプリング・レートと、必要に応じて別のレートを指定する方法を理解する必要があります。 詳しくは、サンプリング・レートを参照してください。 どのフォーマットでも、サービスから返される音声は、常に単一チャネル音声です。

サンプリング・レート

サンプリング・レート (またはサンプリング頻度) とは、音声において 1 秒当たりに生成されるサンプル数のことです。 サンプリング・レートはヘルツ (Hz) またはキロヘルツ (kHz) で測定されます。 例えば 1 秒あたり 16,000 サンプルのレートは 16,000 Hz (または 16 kHz) に相当します。

このサービスは、その内部では常に 22,050 Hz のサンプリング・レートで音声を合成します。 多くのフォーマットでは、このサービスは音声を返すときもこのサンプリング・レートを使用します。 その他のフォーマットでは、このサービスは別のサンプリング・レートで音声を返します。

ほとんどのフォーマットで、別のサンプリング・レートを音声に指定できます。 audio/alawaudio/l16、およびaudio/mulawフォーマットの場合は、サンプリング・レートを指定する必要があります。 サンプリング・レートを指定するには、音声フォーマットの指定に rate={integer} パラメーターを含めます。 詳しくは、音声フォーマットの指定を参照してください。

サンプリング・レートを指定すると、このサービスは音声を返す前に、音声を 22,050 Hz から指定レートに再度サンプリングします。 指定するサンプリング・レートは、8 kHz から 192 kHz までの範囲の値でなければなりません。 一部の音声フォーマットでは、レートが特定の値に制限されます。フォーマットの説明にこの制限が示されています。

サンプリング・レートの決定

このサービスから返される音声のサンプリング・レートを調べる最も確実な方法は、音声ストリーム自体から情報を抽出することです。 レートを調べるには、単純なテキスト (「hello world」など) を使って /v1/synthesize メソッドを呼び出し、使用する予定のフォーマットとコーデックを指定します。 次に、音声ストリームをファイルに保存し、それをオーディオ・プレイヤー (音声ファイルの再生にリストされているものなど) で開けば、サンプリング・レートを入手できます。

サポートされている音声フォーマット

表 1 に、要求できる合成音声の音声フォーマットのリストがあります。 デフォルトでは、このサービスはOpusコーデック(audio/ogg;codecs=opus)のOgg形式の音声を返します。

Oggオーディオ・フォーマットはサファリ・ブラウザではサポートされていません。 SafariブラウザでText to Speechサービスを使用している場合は、音声を返す別のフォーマットを指定する必要があります。 詳しくは、音声フォーマットの指定を参照してください。

このサービスは、各フォーマットについて以下の情報を提供します。

  • デフォルトのサンプリング・レート は、代替レートを指定しない場合の、示されたフォーマットでの音声サンプリング・レートを示します。
  • 必須パラメーター は、返される音声のサンプリング・レートを指定する必要があるフォーマットを示します。
  • オプション・パラメーター は、返される音声のサンプリング・レートまたはその他の特性をオプションで指定できるフォーマットを示します。
  • パラメーターを受け入れるフォーマットの*「音声フォーマット」codecs列に示されているように、フォーマット指定のパラメーターはすべて ; (セミコロン) で区切ります。 それぞれのフォーマットについて詳しくは、表の後に続くセクションを参照してください。
対応オーディオフォーマットの概要
音声フォーマット デフォルトのサンプリング・レート 必須パラメーター オプション・パラメーター
audio/alaw なし rate={integer} なし
audio/basic 8000 Hz なし なし
audio/flac 22,050 Hz なし rate={integer}
audio/l16 なし rate={integer} endianness=big-endian
endianness=little-endian
audio/mp3
audio/mpeg
22,050 Hz なし rate={integer}
audio/mulaw なし rate={integer} なし
audio/ogg
audio/ogg;codecs=vorbis
22,050 Hz なし rate={integer}
audio/ogg;codecs=opus 48,000 Hz なし rate={integer}
audio/wav 22,050 Hz なし rate={integer}
audio/webm
audio/webm;codecs=opus
48,000 Hz なし なし
audio/webm;codecs=vorbis 22,050 Hz なし rate={integer}

audio/alaw フォーマット

A-law (audio/alaw) は、audio/basicフォーマットおよびaudio/mulawフォーマットに類似した u-law (または mu-law) データを使用してエンコードされた単一チャネルの非可逆音声フォーマットです。ただし、A-law アルゴリズムは異なるシグナル特性を生成します。 このフォーマットでサンプリング・レートを指定する必要があります。 例えば、8 kHz でサンプリングされた音声の場合はaudio/alaw;rate=8000を指定します。

返される音声のストリーミングの性質により、生成される A-law 音声はすべての音声プレイヤーで機能しない可能性があります。 具体的には、音声の長さに関係なく、音声ストリームのヘッダーの属性 numSamples0 に設定されます。

audio/basic フォーマット

基本音声 は、サンプリング・レート 8 kHz で 8 ビットの u-law (または mu-law) データを使用してエンコードされた単一チャネルの非可逆音声フォーマットです。 このフォーマットが最低限の水準のメディア・タイプになります。 このフォーマットの音声のサンプリング・レートは常に 8 kHz です。

詳しくは、以下を参照してください

audio/flac フォーマット

FLAC (Free Lossless Audio Codec) (.flac) は、無損失圧縮音声コーディング・フォーマットです。 オプションで、デフォルトの 22,050 Hz 以外のサンプリング・レートを指定できます。

audio/l16 フォーマット

16 ビットのリニア PCM (Pulse-Code Modulation) は、非圧縮音声データ・フォーマット (多くの場合は .raw または .pcm) です。 この音声フォーマットでは、サンプリング・レートを指定する必要があります。 例えば、16 kHz で音声をサンプリングする場合は audio/l16;rate=16000 を指定します。

オプションで、endianness パラメーターを使用して音声のエンディアンネスを指定できます。 エンディアンネスは、基盤となるコンピューター・アーキテクチャーによるデータ・バイトの配列を示します。

  • ビッグ・エンディアン (endianness=big-endian) は、最上位ビットを基準としてデータを配列します。
  • リトル・エンディアン (endianness=little-endian) は、最下位ビットを基準としてデータを配列します。

例えば、16 kHz でサンプリングし、ビッグ・エンディアンの順序で返される音声を取得するには、audio/l16;rate=16000;endianness=big-endian と指定します。 エンディアンネスを省略した場合、デフォルトでリトル・エンディアンです。 (エンディアンネスの指定が問題となるのは、ヘッダーが組み込まれない audio/l16 フォーマットの場合のみです。 エンディアンネスは、他のフォーマットでは関係ありません。)

詳しくはIETF Request for Comment(RFC)2586を参照のこと。

audio/mp3 フォーマットと audio/mpeg フォーマット

MP3 または Motion Picture Experts Group (MPEG) は、非可逆データ圧縮フォーマットです (MP3 と MPEG は同じフォーマットを意味します) 。 オプションで、デフォルトの 22,050 Hz 以外のサンプリング・レートを指定できます。

audio/mulaw フォーマット

8 ビットの mu-law (または u-law) 音声 は、8 ビット mu-law データを使用してエンコードされた単一チャネルの非可逆音声フォーマットです。 この音声フォーマットでは、サンプリング・レートを指定する必要があります。 例えば、16 kHz で音声をサンプリングする場合は audio/mulaw;rate=16000 を指定します。

audio/ogg フォーマット

Ogg フォーマット (.ogg) は、無料で公開されているコンテナー・フォーマットです (Xiph.org Foundation が管理しています)。 以下のいずれかのコーデックを使用して圧縮された音声ストリームを要求するフォーマットを使用して codecs パラメーターを指定できます。

  • Opus コーデック (audio/ogg;codecs=opus を指定)。 オプションで、デフォルトの 48,000 Hz 以外のサンプリング・レートを指定できます。 有効なサンプリング・レートの値は、480002400016000120008000 のみです。 これらの以外の値を指定すると、このサービスからエラーが返されます。

    現在、このサービスには制約があり、有効なサンプリング・レートが無視されます。 このサービスは、常に 48 kHz のサンプリング・レートで音声を返します。

  • Vorbis コーデック (audio/ogg;codecs=vorbis または単に audio/ogg を指定)。 オプションで、デフォルトの 22,050 Hz 以外のサンプリング・レートを指定できます。

どちらのコーデックも無料で公開されている非可逆音声圧縮フォーマットです。 Opus が推奨コーデックですが、 コーデックを省略した場合は、Ogg の仕様に従い、Vorbis フォーマットの音声が返されます。 音声フォーマットをすべて省略した場合、サービスは、 Opus コーデックを使用した Ogg フォーマットの音声をデフォルトで返します。

詳しくは、以下を参照してください

audio/wav フォーマット

Waveform Audio ファイル・フォーマット (WAV) (.wav) は、 非圧縮音声ビット・ストリームによく使用される標準的なコンテナー・フォーマットですが、 圧縮音声も入れることができます。 オプションで、デフォルトの 22,050 Hz 以外のサンプリング・レートを指定できます。

返される音声がストリーミングの性質を持つため、オーディオ・プレイヤーによっては、生成された WAV 音声を再生できないことがあります。 具体的には、音声の長さに関係なく、音声ストリームのヘッダーの属性 numSamples0 に設定されます。

audio/webm フォーマット

Web メディア (WebM) (.webm) は、オープンなメディア・ファイル・フォーマットです。 以下のいずれかのコーデックを使用して圧縮された音声ストリームを要求するフォーマットを使用して codecs パラメーターを指定できます。

  • Opus コーデック (audio/webm;codecs=opus または単に audio/webm を指定)。 このフォーマットの音声のサンプリング・レートは常に 48 kHz です。
  • Vorbis コーデック (audio/webm;codecs=vorbis を指定)。 オプションで、デフォルトの 22,050 Hz 以外のサンプリング・レートを指定できます。

どちらのコーデックも無料で公開されている非可逆音声圧縮フォーマットです。 推奨されるコーデックは Opus です。

詳しくは、以下を参照してください

音声フォーマットの指定

デフォルトでは、サービスは audio/ogg;codecs=opus のフォーマットの音声を返します。 インターフェースとして HTTP または WebSocket のいずれかを使用して別の音声フォーマットを指定できます。

  • HTTP の GET および POST /v1/synthesize メソッドでは、Accept 要求ヘッダーまたは accept 照会パラメーターを使用してフォーマットを指定できます。
    • Accept 要求ヘッダーを使用する場合は、次の例に示すように、フォーマットおよび追加のパラメーターを指定します。 この例では、audio/l16 フォーマットと、16,000 Hz のサンプリング・レートを指定しています。

      audio/l16;rate=16000
      
    • accept 照会パラメーターを使用する場合は、次の例に示すように、フォーマットおよび追加のパラメーターを URL エンコードする必要があります。 この例では、前の例と同じフォーマットとサンプリング・レートを指定しています。

      audio%2Fl16%3Brate%3D16000
      
    デフォルトのフォーマットの音声を受け取るには、ヘッダーと照会パラメーターの両方を省略してください。 詳しくは、テキストからの音声の合成を参照してください。
  • WebSocket /v1/synthesize メソッドでは、合成を開始するために渡すテキスト・メッセージの accept 必須パラメーターを使用して、フォーマットを指定する必要があります。 デフォルトのフォーマットの音声を受け取るには、パラメーターに値 */* を指定します。 詳しくは、入力テキストを送信するを参照してください。

音声ファイルの再生

サービスで生成された音声ファイルを再生するには、以下のいずれかのツールを使用します。

  • Google Chrome™、Firefox ®、または Microsoft® Internet Explorer® などの Web ブラウザー
  • Audacity® audacityteam.org)やFFmpeg ffmpeg.org)などのオーディオプレーヤー