メインコンテンツへスキップ
リアルタイム音声認識 (STT) 用に生 (PCM) 音声を送信する場合、エンコーディングとサンプルレートはオーディオデータからは検出できないため、クエリパラメータとして指定してください。 一般的には、エンコーディングとサンプルレートを、上流のパイプライン (マイクキャプチャ、テレフォニーストリーム、ML モデル出力など) がすでに生成しているものに合わせる必要があります。

API リファレンス

encoding
string
入力音声のエンコーディング。利用可能なオプション: pcm_s16lepcm_s32lepcm_f16lepcm_f32lepcm_mulawpcm_alaw
sample_rate
number
入力音声のサンプルレート (Hz)。送信する音声の実際のサンプルレートと一致している必要があります。
リアルタイムエンドポイントとは異なり、バッチ STT はコンテナ化された音声 (例: wavmp3) も受け付けます。encodingsample_rate のクエリパラメータは、生 PCM 音声を使用するときにのみ指定してください。

チートシート

生の音声を送信する場合、エンコーディングとサンプルレートは上流ソースが生成するものと一致している必要があります。 まずは次の経験則を参考にしてください。
エンコーディングビット深度一般的なソース推奨サンプルレート
pcm_s16le16-bit intボイスエージェントプラットフォーム、WAV ファイル、ほとんどの音声キャプチャライブラリ8000–48000
pcm_s32le32-bit intプロフェッショナルオーディオインターフェース、DAW44100–48000
pcm_f16le16-bit float一般的でない。一部の半精度 ML パイプライン16000–48000
pcm_f32le32-bit floatブラウザ (Web Audio API)、ML モデル (PyTorch、NumPy/SciPy)16000–48000
pcm_mulaw8-bit compressed北米/日本のテレフォニー (G.711μ)、Twilio8000
pcm_alaw8-bit compressed欧州/国際テレフォニー (G.711A)8000

テレフォニー

北米と日本

多くのお客様は Twilio 経由で音声出力を送信します。Twilio で送信されるすべての音声は、サンプルレート 8 kHz の µ-law エンコーディングにトランスコードされます。
?encoding=pcm_mulaw&sample_rate=8000

ヨーロッパ、インド、その他

ヨーロッパおよび国際的な電話ネットワークの標準 (G.711A) は、サンプルレート 8 kHz の 8 ビット A-law 圧縮 PCM です。
?encoding=pcm_alaw&sample_rate=8000

ボイスエージェントプラットフォーム

多くのボイスエージェントプラットフォームは、パイプラインで 16 kHz サンプルレートの pcm_s16le を使用します。特定のプラットフォームでの仕様は必ず確認してください。
?encoding=pcm_s16le&sample_rate=16000

Web ブラウザ

Web Audio API を通じてマイク音声をキャプチャする場合、サンプルは pcm_f32le です。AudioContext (およびそこからフレームを読み取る AudioWorklet ノード) は常に 32-bit float を生成します。 キャプチャ時のサンプルレートは、ユーザーの入力ハードウェアが報告する値がデフォルトとなり、一般的には 48 kHz、ときには 44.1 kHz になります。AudioContext.sampleRate から読み取り、同じ値を送信してください。
const audioContext = new AudioContext();
console.log(audioContext.sampleRate); // e.g. 48000
?encoding=pcm_f32le&sample_rate=48000
音声認識は 16 kHz を超えるレートからほとんど恩恵を受けないため、送信前に 16 kHz の pcm_s16le にダウンサンプリングすると、精度への影響をほぼ受けずに帯域を削減できます。

パラメータを再確認する

モデルは、接続時に宣言した encodingsample_rate を使ってバイト列をデコードします。これらのパラメーターが正しくなくても、Cartesia のサーバーは エラーを返さない場合があります パラメーターを検証するには、音声データを保存し、ffplay で再生してみてください:
# encoding=pcm_s16le
# sample_rate=16000
# 1 channel (the API expects mono)
ffplay -f s16le -ar 16000 -ac 1 audio.raw

# general format
ffplay -f <encoding_without_pcm_prefix> -ar <sample_rate> -ac <num_channels_must_be_one> <file_path>
再生がおかしく聞こえる場合 (かなり明らかにわかるはずです)、encodingsample_rate がデータと一致していません。音声がきれいに再生されるように修正し、その同じ値を API に送ってください。