Skip to main content

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

このトピックでは、Fun-ASR-Flash 非リアルタイム音声認識 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いいえ結果が SSE ストリームとして返されるかどうかを制御します。enable に設定すると SSE ストリーミングが有効になり、サーバーは中間および最終認識結果を複数のメッセージで返します。disable に設定するか、パラメーターを省略すると、最終結果のみが返されます。

リクエストボディ

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(必須)モデルパラメーター。
テキスト調整機能はデフォルトで無効で、まだ提供されていません。テキスト調整では、音声認識と同時に、意味のないフィラーや言いよどみによる重複の削除、発話中の言い直しへの対応、口語表現の整理、句読点とテキスト形式の標準化を行います。話者の最終的な意図と重要な情報をできる限り保ちながら、簡潔で流暢かつ読みやすい結果を出力します。

プロパティ

formatstring(必須)音声フォーマット。実際の音声フォーマットに合わせて設定します。サポートされている値は wav、 mp3、 opus です。詳細については、「音声仕様」をご参照ください。sample_ratestring(オプション)オーディオのサンプルレート (Hz) です。たとえば、16000 は 16 kHz のサンプルレートを意味します。詳細については、「オーディオ仕様」をご参照ください。vocabulary_idstring(オプション)プリコンパイルされたホットワードリストの ID。この ID は、ホットワードリスト作成 API を呼び出して事前に生成します。認識時に ID を渡して、リスト内のホットワードを使用します。語彙が既知で比較的安定しており、リクエスト間で同じ単語リストを再利用する必要があるシナリオに適しています。使用方法の詳細については、プリコンパイルされたホットワードをご参照ください。language_hints array[string](オプション)認識する言語コードを指定します。事前に言語が不明な場合は省略すると、モデルが自動検出します。最大 1 個の値を指定でき、それ以上指定した場合は最初の 1 個だけが有効です。
  • 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 キーは北京リージョンのものとは異なります。
  • 非ストリーミング
  • ストリーミング
  • コンテキスト付き - 非ストリーミング
  • コンテキスト付き - ストリーミング
  • 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": "fun-asr-flash-2026-06-15",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "{YOUR_AUDIO_URL}"
                        }
                    }
                ]
            }
        ]
    },
    "parameters": {
        "format": "wav",
        "sample_rate": "16000"
    }
}'

レスポンスボディ

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

プロパティ

textstringこれまでに蓄積された認識された全文。sentenceobject現在の文の詳細。

プロパティ

sentence_idinteger文番号。1 から始まります。sentence_endboolean文の最終結果であるかどうか。 true は、文の認識が完了したことを示します。begin_timeinteger文の開始時刻 (ミリ秒)。end_timeintegerミリ秒単位の文の終了時間。sentence_end が true の場合にのみ返されます。textstring現在の文の認識されたテキスト。channel_idintegerチャンネル番号。0 から始まります。wordsarray単語レベルのタイムスタンプのリスト。
textstring単語のテキスト。begin_timeinteger単語の開始時刻 (ミリ秒)。end_timeinteger単語の終了時刻 (ミリ秒)。punctuationstring単語の後の句読点。句読点がない場合は空の文字列。fixedboolean単語が確定されたかどうか。 false の場合、単語のタイムスタンプが後続のイベントで調整される可能性があります。
usageobject使用量情報です。sentence_end が true の場合にのみ返されます。
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"
}

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

ストリーミングモードでは、クライアントは以下を処理する必要があります:
  1. 受信した SSE イベントごとに、data フィールドの JSON を解析します。
  2. output.sentence.sentence_end で現在の文が終了したかを判断します。true の場合は認識が完了し、単語レベルのタイムスタンプが確定しているため、最終結果として使用できます。false の場合は認識中であり、後続のイベントでテキストやタイムスタンプが更新される可能性があります。
  3. usage は文の終了イベントでのみ返され、処理済みの音声時間を含みます。