Skip to main content

非リアルタイム音声認識 (Qwen-Audio-ASR) HTTP API

このトピックでは、Qwen-Audio-ASR 非リアルタイム音声認識 HTTP API のパラメーターとインターフェイスの詳細について説明します。

サポートされている音声フォーマット、ファイルサイズの制限、時間の制限などの入力要件については、音声仕様をご参照ください。

サービスエンドポイント

  • シンガポール
  • 中国 (北京)
POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation{WorkspaceId} を実際の ワークスペース ID に置き換えます。
Alibaba Cloud Model Studio は、中国 (北京) およびシンガポールリージョン向けにワークスペース固有のドメインをリリースしました。新しい専用ドメインは、推論リクエストに対して優れたパフォーマンスと高い安定性を提供します。新しいドメインへの移行を推奨します:
  • 中国 (北京): dashscope.aliyuncs.com から {WorkspaceId}.cn-beijing.maas.aliyuncs.com へ
  • シンガポール: dashscope-intl.aliyuncs.com から {WorkspaceId}.ap-southeast-1.maas.aliyuncs.com に

リクエストヘッダー

パラメータータイプ必須説明
Authorizationstringはい認証トークン。Bearer <your_api_key> というフォーマットです。<your_api_key> を、実際の API キーに置き換えてください。
Content-Typestringはいリクエストボディのメディアタイプ。 application/json に固定されています。
X-DashScope-SSEstringいいえストリーミング結果を要求するかどうかを制御します。enable を指定すると SSE ストリーミングを要求します。disable を指定するか、このパラメーターを省略すると、最終結果のみが返されます。
qwen-audio-3.0-asr-flash のみに適用されます。音声の長さが 1 分以上の場合にのみ SSE ストリーミングで結果が返されます。

リクエストボディ

modelstring(必須)モデル名。inputobject(必須)入力情報。

プロパティ

messagesarray(object)(必須)メッセージリスト。認識する音声と、オプションで認識精度を向上させるための会話コンテキストが含まれます。
コンテキスト機能は、ドメイン固有の用語の認識精度を向上させます。使用方法については、コンテキスト拡張をご参照ください。リクエストには、各タイプ (input_text および text) のコンテキストメッセージを最大 5 つ含めることができます。この上限を超えた場合、最新の 5 つのメッセージのみが保持されます。1 ターンあたりの合計コンテキストテキスト (user メッセージと assistant メッセージ内の text フィールドの合計の長さ) は 400 文字を超えることはできません。各文字は 1 としてカウントされます。超過分は末尾から切り捨てられます。
コンテキストを含める場合、messages 内のメッセージの順序が重要です。コンテキストメッセージは、会話のターンごとに配置する必要があります。各ターン内では、(input_text タイプの) user メッセージを、対応する (text タイプの) assistant メッセージの前に配置する必要があります。input_audio を含む user メッセージは、messages 配列の最後の項目にする必要があります。

プロパティ

rolestring(必須)メッセージのロール。有効な値:
  • user (必須): ユーザーのメッセージ。 type が input_audio の場合、認識するオーディオを格納します。 type が input_text の場合、以前のターンの認識結果、またはドメイン固有の単語リスト (オプション、コンテキストとして使用) を格納します。
  • assistant (任意、コンテキスト):過去のターンにおける大規模言語モデルからの応答。
contentarray(object)(必須)メッセージコンテンツのリスト。

プロパティ

typestring(必須)コンテンツタイプ。各リクエストには、タイプが input_audio のメッセージが少なくとも 1 つ必要です。有効な値:
  • input_audio (必須): 認識する音声入力 (ロールはユーザー)。また、input_audio オブジェクトを渡す必要があります。
  • input_text (任意、コンテキスト): 過去のターンのユーザーの発話の認識結果、またはドメイン固有の単語リスト (ロールはユーザー) です。 text フィールドも渡す必要があります。
  • text (任意、コンテキスト): 以前のターンにおける大規模言語モデルからの応答 (ロールはアシスタント)。 text フィールドも渡す必要があります。
input_audioobject(条件付き必須)type が input_audio の場合は必須です。

プロパティ

datastring(必須)認識する音声データ。サポートされている音声フォーマット、ファイルサイズの制限、時間の制限などの入力要件については、音声仕様をご参照ください。2 つのメソッドがサポートされています:
  • 音声ファイルの URL:音声ファイルへの公開アクセス可能な URL を渡します。
  • Base64 データ URI: Base64 エンコードされたオーディオデータをデータ URI として渡します。値は、data:{MIME_TYPE};base64, プレフィックスと Base64 エンコードされたオーディオデータを連結したものです。サポートされている MIME タイプには、audio/wav や audio/mp3 などがあります。
例 (URL):https://example.com/audio/sample.wav例 (Base64): data:audio/wav;base64,{BASE64_ENCODED_DATA}
textstring(条件付き必須)type が input_text の場合、前のターンのユーザーの発話の認識結果、またはドメイン固有の単語リストを入力します。 type が text の場合、前のターンの大規模言語モデルの応答を入力します。 テキストの長さは文字単位で測定され、各文字は 1 としてカウントされます。 1 つのコンテキストターン内のすべてのメッセージにわたる text フィールドの合計の長さは 400 文字を超えることはできません。 超過分は末尾から切り捨てられます。
parametersobject(必須)モデルパラメーター。
qwen-audio-3.0-asr-flash のテキスト調整機能はデフォルトで無効で、まだ提供されていません。qwen-audio-3.1-asr-flash はネイティブのテキスト調整に対応しています。テキスト調整では、音声認識と同時に、意味のないフィラーや言いよどみによる重複の削除、発話中の言い直しへの対応、口語表現の整理、句読点とテキスト形式の標準化を行います。話者の最終的な意図と重要な情報をできる限り保ちながら、簡潔で流暢かつ読みやすい結果を出力します。

プロパティ

speaker_diarization_enabled boolean (オプション)
qwen-audio-3.1-asr-flash のみに適用されます。
話者分離を有効にするかどうかを指定します。デフォルトは false です。true にすると、レスポンスの speaker_id で話者を区別し、output.sentences を返します。有効な場合、keep_dialect と language_hints は無効になります。keep_dialect boolean (オプション)
qwen-audio-3.1-asr-flash のみに適用されます。
方言表現を保持するかどうかを指定します。デフォルトは false です。false は方言を標準中国語のテキストに変換し、true は方言表現を保持します。formatstring(必須)音声フォーマット。実際の音声フォーマットに合わせて設定します。サポートされている値は wav、 mp3、 opus です。詳細については、「音声仕様」をご参照ください。sample_ratestring(オプション)オーディオのサンプルレート (Hz) です。たとえば、16000 は 16 kHz のサンプルレートを意味します。詳細については、「オーディオ仕様」をご参照ください。vocabulary_idstring(オプション)プリコンパイルされたホットワードリストの ID。この ID は、ホットワードリスト作成 API を呼び出して事前に生成します。認識時に ID を渡して、リスト内のホットワードを使用します。語彙が既知で比較的安定しており、リクエスト間で同じ単語リストを再利用する必要があるシナリオに適しています。使用方法の詳細については、プリコンパイルされたホットワードをご参照ください。vocabularyobject(オプション)即時ホットワード。キーを熱詞テキスト (string)、値を熱詞の重み (integer) とするキーと値のペアとして渡されます。事前に熱詞リストを作成する必要はありません。重みの有効値は [1, 5] または 50 です。[1, 5] の範囲では、値が大きいほどモデルがその単語を出力する可能性が高くなります。値が 50 の場合はスーパー熱詞を指定します。これにより再現率が大幅に向上しますが、スーパー熱詞の数は 50 を超えることはできません。一時的な、セッションレベルのホットワード最適化に適しています。プリコンパイルされたホットワードと一緒に構成された場合、インスタントホットワードのみが有効になります。使用方法の詳細については、インスタントホットワードをご参照ください。
インラインホットワードをサポートしているのは qwen-audio-3.0-asr-flash のみです。
language_hints array[string](オプション)認識する言語コードを指定します。事前に言語が不明な場合は省略すると、モデルが自動検出します。最大 4 個の値を指定でき、それ以上指定した場合は最初の 4 個だけが有効です。言語コードを指定すると、認識精度を向上できます。
  • zh: 中国語
  • en: 英語
  • ja: 日本語
  • ko: 韓国語
  • vi: ベトナム語
  • th: タイ語
  • id: インドネシア語
  • ms: マレー語
  • tl: フィリピン語
  • hi: ヒンディー語
  • ar: アラビア語
  • fr: フランス語
  • de: ドイツ語
  • es: スペイン語
  • pt: ポルトガル語
  • ru: ロシア語
  • it: イタリア語
  • nl: オランダ語
  • sv: スウェーデン語
  • da: デンマーク語
  • fi: フィンランド語
  • no: ノルウェー語
  • el: ギリシャ語
  • pl: ポーランド語
  • cs: チェコ語
  • hu: ハンガリー語
  • ro: ルーマニア語
  • bg: ブルガリア語
  • hr: クロアチア語
  • sk: スロバキア語
qwen-audio-3.1-asr-flash は、次の言語コードもサポートします。
  • tr: トルコ語
  • fa: ペルシア語
  • mr: マラーティー語
  • ml: マラヤーラム語
  • ne: ネパール語
  • ky: キルギス語
  • az: アゼルバイジャン語
  • ka: ジョージア語
  • hy: アルメニア語
  • sl: スロベニア語
  • sq: アルバニア語
  • et: エストニア語
  • lv: ラトビア語
  • lt: リトアニア語
  • ca: カタロニア語
  • eu: バスク語
  • gl: ガリシア語
  • or: オディア語
  • dv: ディベヒ語
  • as: アッサム語
  • ku: クルド語
  • tig: ティグレ語
  • fy: 西フリジア語
  • ba: バシキール語
  • be: ベラルーシ語
  • tt: タタール語
  • ia: インターリングア
  • mhr: 東マリ語
  • tok: トキポナ語
以下の例では、シンガポールリージョンの構成を使用しています。{WorkspaceId} を実際のワークスペース ID に置き換えてください。構成はリージョンによって異なり、シンガポールリージョンの API キーは北京リージョンのものとは異なります。
  • 非ストリーミング
  • ストリーミング
  • コンテキスト付き - 非ストリーミング
  • コンテキスト付き - ストリーミング
  • Base64
  • インラインホットワード
curl --location --request POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
     --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
     --header "Content-Type: application/json" \
     --header "X-DashScope-SSE: disable" \
     --data '{
    "model": "qwen-audio-3.0-asr-flash",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "{YOUR_AUDIO_URL}"
                        }
                    }
                ]
            }
        ]
    },
    "parameters": {
        "format": "wav",
        "sample_rate": "16000"
    }
}'

レスポンスボディ

request_idstringこのリクエストの一意の識別子。outputobject出力結果。

プロパティ

textstringこれまでに蓄積された認識された全文。sentences array[object]
qwen-audio-3.1-asr-flash のみに適用されます。
話者分離が有効な場合に返されます。現在および過去の文の認識結果を含みます。各要素の構造は sentence と同じです。sentenceobject現在の文の詳細。

プロパティ

speaker_id integer | null
qwen-audio-3.1-asr-flash のみに適用されます。
話者を区別するための話者 ID です。話者分離が有効な場合は ID を返し、無効な場合は null です。sentence_idinteger文番号。1 から始まります。sentence_endboolean文の最終結果であるかどうか。 true は、文の認識が完了したことを示します。begin_timeinteger文の開始時刻 (ミリ秒)。end_timeintegerミリ秒単位の文の終了時間。sentence_end が true の場合にのみ返されます。textstring現在の文の認識されたテキスト。channel_idintegerチャンネル番号。0 から始まります。wordsarray単語レベルのタイムスタンプのリスト。
speaker_id integer | null
qwen-audio-3.1-asr-flash のみに適用されます。
この単語の話者 ID です。話者分離が有効な場合は ID を返し、無効な場合は null です。textstring単語のテキスト。begin_timeinteger単語の開始時刻 (ミリ秒)。end_timeinteger単語の終了時刻 (ミリ秒)。punctuationstring単語の後の句読点。句読点がない場合は空の文字列。fixedboolean単語が確定されたかどうか。 false の場合、単語のタイムスタンプが後続のイベントで調整される可能性があります。
usageobject使用量情報です。sentence_end が true の場合にのみ返されます。
durationinteger処理された音声の長さ (秒)。input_tokens integer
qwen-audio-3.1-asr-flash のみに適用されます。
このリクエストで消費された入力トークン数。output_tokens integer
qwen-audio-3.1-asr-flash のみに適用されます。
このリクエストで消費された出力トークン数。total_tokens integer
qwen-audio-3.1-asr-flash のみに適用されます。
このリクエストで消費された合計トークン数。input_tokens と output_tokens の合計です。
  • 非ストリーミング
  • ストリーミング
{
    "output": {
        "sentence": {
            "begin_time": 760,
            "channel_id": 0,
            "end_time": 3800,
            "sentence_end": true,
            "sentence_id": 1,
            "text": "Hello World, this is Alibaba Speech Lab.",
            "words": [
                {"begin_time": 760, "end_time": 1040, "fixed": true, "punctuation": "", "text": "Hello"},
                {"begin_time": 1040, "end_time": 1240, "fixed": true, "punctuation": ",", "text": " World"},
                {"begin_time": 1360, "end_time": 1880, "fixed": true, "punctuation": "", "text": "this is"},
                {"begin_time": 1880, "end_time": 2520, "fixed": true, "punctuation": "", "text": "Alibaba"},
                {"begin_time": 2520, "end_time": 2840, "fixed": true, "punctuation": "", "text": "Speech"},
                {"begin_time": 2840, "end_time": 3800, "fixed": true, "punctuation": ".", "text": "Lab"}
            ]
        },
        "text": "Hello World, this is Alibaba Speech Lab."
    },
    "usage": {
        "duration": 4
    },
    "request_id": "40e0734d-096f-9ae3-86c1-a8c013287561"
}

SSE ストリーミング結果の処理ロジック

ストリーミングモードでは、クライアントは以下を処理する必要があります:
  1. 受信した SSE イベントごとに、data フィールドの JSON を解析します。
  2. qwen-audio-3.0-asr-flash では、output.sentence.sentence_end で現在の文が終了したかを判断します。true の場合は認識が完了し、単語レベルのタイムスタンプが確定しているため、最終結果として使用できます。false の場合は認識中であり、後続のイベントでテキストやタイムスタンプが更新される可能性があります。
  3. usage は文の終了イベントでのみ返され、処理済みの音声時間を含みます。qwen-audio-3.1-asr-flash では、リクエストの入力、出力、合計トークン数も含まれます。このモデルはトークン使用量に基づいて課金されます。
qwen-audio-3.1-asr-flash で話者分離を無効にしている場合、単語のタイムスタンプは output.sentence.words[i].fixed が true になった時点で確定します。それまでは変更される可能性があります。話者分離を有効にした場合は、output.sentences から現在および過去の文の結果を読み取ります。