すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Model Studio:非リアルタイム音声認識 (Qwen-Audio-3.0-ASR-Flash/Fun-ASR-Flash) HTTP API

最終更新日:Sep 08, 2026

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

ユーザーガイド: 非リアルタイム音声認識。サポートされている音声フォーマット、ファイルサイズの制限、時間の制限などの入力要件については、音声仕様をご参照ください。

サービスエンドポイント

シンガポール

POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

{WorkspaceId} を実際の ワークスペース ID に置き換えます。

中国 (北京)

POST https://{WorkspaceId}.cn-beijing.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

{WorkspaceId} を実際のワークスペース ID に置き換えます。既存のドメインは引き続き完全に機能します。

リクエストヘッダー

パラメーター

タイプ

必須

説明

Authorization

string

はい

認証トークン。Bearer <your_api_key> というフォーマットです。<your_api_key> を、実際の API キーに置き換えてください。

Content-Type

string

はい

リクエストボディのメディアタイプ。 application/json に固定されています。

X-DashScope-SSE

string

はい

結果が SSE ストリームとして返されるかどうかを制御します。enable に設定すると SSE ストリーミングが有効になり、サーバーは中間および最終認識結果を複数のメッセージで返します。disable に設定するか、パラメーターを省略すると、最終結果のみが返されます。

リクエストボディ

modelstring(必須)

モデル名。Qwen-Audio-3.0-ASR-Flash および Fun-ASR-Flash モデルシリーズがサポートされています。詳細については、サポートされているモデルとリージョンをご参照ください。

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(条件付き必須)

typeinput_audio の場合は必須です。

プロパティ

datastring(必須)

認識する音声データ。サポートされている音声フォーマット、ファイルサイズの制限、時間の制限などの入力要件については、音声仕様をご参照ください。2 つのメソッドがサポートされています:

  • 音声ファイルの URL:音声ファイルへの公開アクセス可能な URL を渡します。
  • Base64 データ URI: Base64 エンコードされたオーディオデータをデータ URI として渡します。値は、data:{MIME_TYPE};base64, プレフィックスと Base64 エンコードされたオーディオデータを連結したものです。サポートされている MIME タイプには、audio/wavaudio/mp3 などがあります。

例 (URL):https://example.com/audio/sample.wav

例 (Base64): data:audio/wav;base64,{BASE64_ENCODED_DATA}

textstring(条件付き必須)

typeinput_text の場合、前のターンのユーザーの発話の認識結果、またはドメイン固有の単語リストを入力します。 typetext の場合、前のターンの大規模言語モデルの応答を入力します。 テキストの長さは文字単位で測定され、各文字は 1 としてカウントされます。 1 つのコンテキストターン内のすべてのメッセージにわたる text フィールドの合計の長さは 400 文字を超えることはできません。 超過分は末尾から切り捨てられます。

parametersobject(必須)

モデルパラメーター。

プロパティ

formatstring(必須)

音声フォーマット。実際の音声フォーマットに合わせて設定します。サポートされている値は wavmp3opus です。詳細については、「音声仕様」をご参照ください。

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](オプション)

認識する言語コード。事前に言語を特定できない場合は、これを設定せずにモデルに自動検出させます。

Qwen-Audio-3.0-ASR-Flash シリーズモデルの場合、最大 4 つの値を設定できます。4 つ以上設定した場合、最初の 4 つのみが有効になります。Fun-ASR-Flash シリーズモデルの場合、1 つの値のみ設定できます。複数設定した場合、最初の値のみが有効になります。

サポートされている言語コードを表示するにはクリック

  • qwen-audio-3.0-asr-flash, fun-asr-flash-2026-06-15:

    • 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: スロバキア語

以下の例では、シンガポールリージョンの構成を使用しています。{WorkspaceId} を実際のワークスペース ID に置き換えてください。構成はリージョンによって異なり、シンガポールリージョンの API キーは北京リージョンのものとは異なります。

非ストリーミング

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"
    }
}'

ストリーミング

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: enable" \
     --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"
    }
}'

コンテキスト付き - 非ストリーミング

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_text",
                        "text": "Hello"
                    }
                ]
            },
            {
                "role": "assistant",
                "content": [
                    {
                        "type": "text",
                        "text": "Hello, I'm Qwen. How can I help you?"
                    }
                ]
            },
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "{YOUR_AUDIO_URL}"
                        }
                    }
                ]
            }
        ]
    },
    "parameters": {
        "format": "wav",
        "sample_rate": "16000"
    }
}'

コンテキスト付き - ストリーミング

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: enable" \
     --data '{
    "model": "qwen-audio-3.0-asr-flash",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_text",
                        "text": "Hello"
                    }
                ]
            },
            {
                "role": "assistant",
                "content": [
                    {
                        "type": "text",
                        "text": "Hello, I'm Qwen. How can I help you?"
                    }
                ]
            },
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "{YOUR_AUDIO_URL}"
                        }
                    }
                ]
            }
        ]
    },
    "parameters": {
        "format": "wav",
        "sample_rate": "16000"
    }
}'

Base64

Base64 エンコードされたデータ (データ URL) を data:<mediatype>;base64,<data> のフォーマットで渡すことができます。

  • <mediatype>:MIME タイプです。

    値は音声フォーマットによって異なります。例:

    • WAV: audio/wav
    • MP3: audio/mpeg
  • <data>: 音声の Base64 エンコード文字列。

    Base64 エンコーディングはデータサイズを増加させます。エンコードされたデータが入力音声サイズの制限 (10 MB) を満たすように、元のファイルのサイズを制御してください。

  • 例: data:audio/wav;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA//PAxABQ/BXRbMPe4IQAhl9

    サンプルコードを表示するにはクリック

    import base64, pathlib
    
    # 実際の音声ファイルのパスに置き換え、音声要件を満たしていることを確認してください
    file_path = pathlib.Path("{YOUR_AUDIO_FILE}")
    base64_str = base64.b64encode(file_path.read_bytes()).decode()
    data_uri = f"data:audio/mpeg;base64,{base64_str}"
    
    import java.nio.file.*;
          import java.util.Base64;
    
          public class Main {
              /**
               * 実際の音声ファイルのパスに置き換え、音声要件を満たしていることを確認してください
               */
              public static String toDataUrl(String filePath) throws Exception {
                  byte[] bytes = Files.readAllBytes(Paths.get(filePath));
                  String encoded = Base64.getEncoder().encodeToString(bytes);
                  return "data:audio/mpeg;base64," + encoded;
              }
    
              public static void main(String[] args) throws Exception {
                  System.out.println(toDataUrl("{YOUR_AUDIO_FILE}"));
              }
          }
    
import base64, pathlib
import os
import requests

# 実際の音声ファイルのパスに置き換え、音声要件を満たしていることを確認してください
file_path = pathlib.Path("{YOUR_AUDIO_FILE}")
base64_str = base64.b64encode(file_path.read_bytes()).decode()
data_uri = f"data:audio/wav;base64,{base64_str}"

# "{WorkspaceId}" を実際のワークスペース ID に置き換えてください
url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation"

headers = {
    "Authorization": f"Bearer {os.environ['DASHSCOPE_API_KEY']}",
    "Content-Type": "application/json",
    "X-DashScope-SSE": "disable",
}

payload = {
    "model": "qwen-audio-3.0-asr-flash",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": data_uri,
                        },
                    }
                ],
            }
        ]
    },
    "parameters": {
        "format": "wav",
        "sample_rate": "16000",
    },
}

response = requests.post(url, headers=headers, json=payload)
print(response.status_code)
print(response.json())

インラインホットワード

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",
        "vocabulary": {"田中一郎": 5, "鈴木花子": 5}
    }
}'

レスポンスボディ

request_idstring

このリクエストの一意の識別子。

outputobject

出力結果。

プロパティ

textstring

これまでに蓄積された認識された全文。

sentenceobject

現在の文の詳細。

プロパティ

sentence_idinteger

文番号。1 から始まります。

sentence_endboolean

文の最終結果であるかどうか。 true は、文の認識が完了したことを示します。

begin_timeinteger

文の開始時刻 (ミリ秒)。

end_timeinteger

ミリ秒単位の文の終了時間。sentence_endtrue の場合にのみ返されます。

textstring

現在の文の認識されたテキスト。

channel_idinteger

チャンネル番号。0 から始まります。

wordsarray

単語レベルのタイムスタンプのリスト。

プロパティ

textstring

単語のテキスト。

begin_timeinteger

単語の開始時刻 (ミリ秒)。

end_timeinteger

単語の終了時刻 (ミリ秒)。

punctuationstring

単語の後の句読点。句読点がない場合は空の文字列。

fixedboolean

単語が確定されたかどうか。 false の場合、単語のタイムスタンプが後続のイベントで調整される可能性があります。

usageobject

使用量情報です。sentence_endtrue の場合にのみ返されます。

プロパティ

durationinteger

処理された音声の長さ (秒)。

非ストリーミング

{
    "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"
}

ストリーミング

X-DashScope-SSE: enable を設定すると、サーバーは Server-Sent Events プロトコルを使用して認識結果を返します。SSE イベント形式は以下のとおりです。

id:{sequence_number}
      event:result
      :HTTP_STATUS/200
      data:{JSON_data}

応答の例:

id:1
event:result
:HTTP_STATUS/200
data:{"output":{"sentence":{"sentence_id":1,"sentence_end":true,"end_time":3800,"words":[{"end_time":1040,"punctuation":"","begin_time":760,"fixed":true,"text":"Hello"},{"end_time":1240,"punctuation":",","begin_time":1040,"fixed":true,"text":" World"},{"end_time":1880,"punctuation":"","begin_time":1360,"fixed":true,"text":"this is"},{"end_time":2520,"punctuation":"","begin_time":1880,"fixed":true,"text":"Alibaba"},{"end_time":2840,"punctuation":"","begin_time":2520,"fixed":true,"text":"Speech"},{"end_time":3800,"punctuation":".","begin_time":2840,"fixed":true,"text":"Lab"}],"begin_time":760,"text":"Hello World, this is Alibaba Speech Lab.","channel_id":0},"text":"Hello World, this is Alibaba Speech Lab."},"usage":{"duration":4},"request_id":"fc1582e4-935c-9fc2-a482-a98bf43daa69"}

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

ストリーミングモードでは、クライアントは以下を処理する必要があります:

  1. 受信した SSE イベントごとに、data フィールドの JSON を解析します。
  2. output.sentence.sentence_end を使用して、現在の文が終了したかどうかを判断します。 この値が true の場合、文の認識が完了し、単語レベルのタイムスタンプが安定し、結果を最終版として使用できます。 この値が false の場合、認識はまだ進行中であり、後続のイベントでテキストとタイムスタンプが更新される可能性があります。
  3. usage 情報は文末イベントでのみ返され、この情報を使用して処理済み音声の持続時間を計測できます。