メインコンテンツまでスキップ

Speech to Text API

1つの音声ファイルをアップロードすると、完成したtranscriptをJSONまたはplain textで返します。multipart fieldとレスポンスはOpenAI transcription APIで 一般的な形式を採用していますが、endpointが異なるため、OpenAI SDKのBase URL だけを変更する方法には対応していません。

API概要

項目
Base URLhttps://api.kitschlabs.com
EndpointPOST /v1/speech-to-text
認証Authorization: Bearer <API_KEY>またはxi-api-key: <API_KEY>
リクエストmultipart/form-data
モデルkitsch-stt-v1
最大ファイルサイズ100 MiB
デフォルトレスポンスJSON

Speech to Textは、認証済みのすべてのアカウントでデフォルトで利用できます。

ファイルを変換するには?

curl --request POST \
"https://api.kitschlabs.com/v1/speech-to-text" \
--header "Authorization: Bearer <API_KEY>" \
--form "file=@speech.wav" \
--form "model=kitsch-stt-v1" \
--form "language=ja" \
--form "response_format=json"

どのfieldを送信できますか?

Field必須説明
filefileはい変換する音声ファイル。最大100 MiB
modelstringはいkitsch-stt-v1
languagestringいいえ予想される言語のISO 639-1コード。例:koenja
promptstringいいえ固有名詞や文脈を示す短いヒント
response_formatstringいいえjson(デフォルト)またはtext
streambooleanいいえfalseのみ対応
kitsch_optionsJSON stringいいえ高度な認識オプション

temperaturestream=true、他のモデルID、未対応のレスポンス形式は エラーになります。音声をリアルタイムで送信する場合は Streaming APIを使用してください。

高度なオプション

kitsch_optionsはJSON文字列として送信します。対応するkeyは次のとおりです。

  • language_hints, language_hints_strict
  • enable_speaker_diarization
  • enable_language_identification
  • context
  • translation
--form 'kitsch_options={"language_hints":["ja","en"],"enable_speaker_diarization":true}'

不明なkeyはエラーになります。

レスポンス形式

response_format=jsonのレスポンス:

{
"text": "こんにちは。",
"usage": {
"type": "duration",
"seconds": 1.25
}
}

response_format=textではUTF-8 plain textを返します。サポートや障害調査のため、 レスポンスのx-kitsch-request-idを記録してください。

課金方法

成功したリクエストは、入力音声の長さを開始済みの1秒単位に切り上げ、 1秒あたり0.1 creditで計算します。たとえば4.2秒と5.0秒はそれぞれ0.5 credit、 5.1秒は0.6 creditです。失敗したリクエストや入力検証で拒否されたリクエストは 課金されません。

エラー処理

エラーbodyにはerror.messageerror.typeerror.paramerror.codeが 含まれます。

{
"error": {
"message": "The uploaded file is too large.",
"type": "invalid_request_error",
"param": "file",
"code": "file_too_large"
}
}
Status意味推奨対応
400422ファイル、モデル、オプションが無効fieldと音声ファイルを確認
401APIキーがない、または無効認証ヘッダーを確認
402credit不足残高と請求状態を確認
413ファイルサイズ超過100 MiB以下にして再送信
429リクエストまたは処理容量の上限Retry-Afterに従いbackoffを適用
503一時的に利用不可request IDを記録し、限定的に再試行