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

Alibaba Cloud Model Studio:Non-real-time speech recognition

最終更新日:Oct 30, 2026

非リアルタイム音声認識モデルは、録音された音声をテキストに変換します。多言語認識、歌声認識、ノイズ除去、話者ダイアライゼーションをサポートしており、会議の文字起こし、通話分析、字幕生成などのシナリオに適しています。

概要

非同期タスクを通じて、録音された音声ファイルや動画ファイルをバッチで文字起こしします。

  • コンテキスト強調により、設定可能なコンテキストを通じて認識精度が向上します。
  • カスタムホットワードにより、事前設定された単語リストを通じて固有名詞の認識精度が向上します。
  • 話者ダイアライゼーション、禁止用語フィルタリング、文レベルまたは単語レベルのタイムスタンプなどの設定可能な機能があります。
  • 非同期文字起こしは、最大 12 時間、サイズ 2 GB までの単一の音声ファイルをサポートします。
  • 任意のサンプルレート、および AAC、WAV、MP3 などの主要な音声・動画形式をサポートします。

ライブ字幕、オンライン会議、音声アシスタントなどのリアルタイムシナリオでは、リアルタイム音声認識をご利用ください。モデル選択のガイダンスについては、「音声テキスト変換」をご参照ください。

前提条件

クイックスタート

重要以下の例では qwen-audio-3.1-asr-flash-filetrans と qwen-audio-3.1-asr-flash を使用します。前者は非同期呼び出しを使用します。リクエスト送信時に X-DashScope-Async: enable を設定し、その後タスクの結果を取得します。後者は同期呼び出しを使用し、ストリーミング出力と非ストリーミング出力をサポートします。

モデルサービスの専用デプロイメントを呼び出し、エラー current user api does not support asynchronous calls が返された場合、そのデプロイメントは同期呼び出しのみをサポートしています。リクエストヘッダーを X-DashScope-Async: disable に変更し、呼び出しの他の部分は変更しないでください。

Qwen-Audio-ASR-Filetrans

音声ファイルや動画ファイルはサイズが大きくなる可能性があるため、ファイル文字起こし API は非同期呼び出しを使用します。タスクを送信し、クエリ API でそのステータスをポーリングし、タスク完了後に認識結果を取得します。

cURL

cURL で API を呼び出す場合、まずタスクを送信して task_id を取得し、その ID を使用してタスク結果をクエリします。

タスクの送信

以下の構成は、シンガポールリージョン向けです。{WorkspaceId}を、実際のワークスペース IDに置き換えてください。構成はリージョンによって異なります。

curl -X POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/asr/transcription' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-H "X-DashScope-Async: enable" \
-d '{
    "model": "qwen-audio-3.1-asr-flash-filetrans",
    "input": {
        "file_urls": [
            "{YOUR_AUDIO_URL}"
        ]
    },
    "parameters": {
        "channel_id": [0],
        "language_hints": ["zh", "en"]
    }
}'

タスク結果の取得

このクエリ API は、デフォルトで 20 QPS を許可し、最大 100 QPS までスケールアップできます。より高い頻度で利用する場合や、ポーリングによるスロットリングを避けるためには、非同期タスクコールバックを設定してください (「高同時実行シナリオ:ポーリングの代わりにコールバックを使用」をご参照ください)。

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

curl -X GET 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json"

認識結果のダウンロード

タスクが成功すると、クエリ API によって返される output.results[].transcription_url は、完全な認識結果を含むパブリックにダウンロード可能な JSON ファイルを指します。この URL はデフォルトで 24 時間有効ですので、速やかにダウンロードして保存してください。

# Replace {transcription_url} with the transcription_url value returned by the query API
curl -sS '{transcription_url}' -o transcription.json
cat transcription.json | jq .

Python

from http import HTTPStatus
from dashscope.audio.asr import Transcription
from urllib import request
import dashscope
import os
import json

# The following is the configuration for the Singapore region. When calling, replace "{WorkspaceId}" with your actual workspace ID. The configuration differs by region.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# The API Key differs between the Singapore and Beijing regions. Get an API Key: https://www.alibabacloud.com/help/model-studio/get-api-key
# If you have not configured the environment variable, replace the following line with your Alibaba Cloud Model Studio API Key: dashscope.api_key = "sk-xxx"
dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")

task_response = Transcription.async_call(
    model='qwen-audio-3.1-asr-flash-filetrans',
    file_urls=['{YOUR_AUDIO_URL}'],
    language_hints=['zh', 'en']  # language_hints is an optional parameter used to specify the language codes of the audio to be recognized. For the value range, see the API reference documentation.
)

transcription_response = Transcription.wait(task=task_response.output.task_id)

if transcription_response.status_code == HTTPStatus.OK:
    for transcription in transcription_response.output['results']:
        if transcription['subtask_status'] == 'SUCCEEDED':
            url = transcription['transcription_url']
            result = json.loads(request.urlopen(url).read().decode('utf8'))
            print(json.dumps(result, indent=4,
                            ensure_ascii=False))
        else:
            print('transcription failed!')
            print(transcription)
else:
    print('Error: ', transcription_response.output.message)

Java

import com.alibaba.dashscope.audio.asr.transcription.*;
import com.alibaba.dashscope.utils.Constants;
import com.google.gson.*;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        // The following is the configuration for the Singapore region. When calling, replace "{WorkspaceId}" with your actual workspace ID. The configuration differs by region.
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
        // Create the transcription request parameters.
        TranscriptionParam param =
                TranscriptionParam.builder()
                        // The API Key differs between the Singapore and Beijing regions. Get an API Key: https://www.alibabacloud.com/help/model-studio/get-api-key
                        // If you have not configured the environment variable, replace the following line with your Alibaba Cloud Model Studio API Key: .apiKey("sk-xxx")
                        .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                        .model("qwen-audio-3.1-asr-flash-filetrans")
                        // language_hints is an optional parameter used to specify the language codes of the audio to be recognized. For the value range, see the API reference documentation.
                        .parameter("language_hints", new String[]{"zh", "en"})
                        .fileUrls(
                                Arrays.asList(
                                        "{YOUR_AUDIO_URL}"))
                        .build();
        try {
            Transcription transcription = new Transcription();
            // Submit the transcription request
            TranscriptionResult result = transcription.asyncCall(param);
            System.out.println("RequestId: " + result.getRequestId());
            // Check whether the task was submitted successfully
            if (result.getTaskId() == null) {
                System.out.println("Error: " + result.getOutput());
                System.exit(1);
            }
            // Block and wait for the task to complete and get the result
            result = transcription.wait(
                    TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
            // Get the transcription result
            List<TranscriptionTaskResult> taskResultList = result.getResults();
            if (taskResultList != null && taskResultList.size() > 0) {
                for (TranscriptionTaskResult taskResult : taskResultList) {
                    String transcriptionUrl = taskResult.getTranscriptionUrl();
                    HttpURLConnection connection =
                            (HttpURLConnection) new URL(transcriptionUrl).openConnection();
                    connection.setRequestMethod("GET");
                    connection.connect();
                    BufferedReader reader =
                            new BufferedReader(new InputStreamReader(connection.getInputStream()));
                    Gson gson = new GsonBuilder().setPrettyPrinting().create();
                    JsonElement jsonResult = gson.fromJson(reader, JsonObject.class);
                    System.out.println(gson.toJson(jsonResult));
                }
            }
        } catch (Exception e) {
            System.out.println("error: " + e);
        }
        System.exit(0);
    }
}

完全な認識結果は、JSON 形式でコンソールに出力されます。これには、文字起こしされたテキストと、音声または動画ファイル内の各セグメントの開始時刻と終了時刻がミリ秒単位で含まれます。

  • 認識結果
{
    "file_url": "{YOUR_AUDIO_URL}",
    "properties": {
        "audio_format": "pcm_s16le",
        "channels": [
            0
        ],
        "original_sampling_rate": 16000,
        "original_duration_in_milliseconds": 3834
    },
    "transcripts": [
        {
            "channel_id": 0,
            "content_duration_in_milliseconds": 2480,
            "text": "Hello World, this is the Alibaba Speech Lab.",
            "sentences": [
                {
                    "begin_time": 760,
                    "end_time": 3240,
                    "text": "Hello World, this is the Alibaba Speech Lab.",
                    "sentence_id": 1,
                    "words": [
                        {
                            "begin_time": 760,
                            "end_time": 1000,
                            "text": "Hello",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 1000,
                            "end_time": 1120,
                            "text": " World",
                            "punctuation": ","
                        },
                        {
                            "begin_time": 1400,
                            "end_time": 1920,
                            "text": "this is",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 1920,
                            "end_time": 2520,
                            "text": "the Alibaba",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 2520,
                            "end_time": 2840,
                            "text": "Speech",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 2840,
                            "end_time": 3240,
                            "text": "Lab",
                            "punctuation": "."
                        }
                    ]
                }
            ]
        }
    ]
}

Qwen-Audio-ASR

Qwen-Audio-ASR シリーズは最長 5 分の音声ファイルに対する同期呼び出しをサポートし、認識結果をストリーミングまたは非ストリーミングで返します。

以下の構成は、シンガポールリージョン向けです。{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.1-asr-flash",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "{YOUR_AUDIO_URL}"
                        }
                    }
                ]
            }
        ]
    },
    "parameters": {
        "format": "wav",
        "sample_rate": "16000"
    }
}'

重要qwen-audio-3.1-asr-flash の HTTP レスポンスには choices フィールドは含まれません。認識結果の構造は次のとおりです。

{
  "output": {
    "sentence": {
      "text": "Recognized text content"
    },
    "text": "Recognized text content"
  },
  "request_id": "..."
}

認識されたテキストは output.sentence.text と output.text に含まれます。

高度な機能

長い音声ファイルの処理

非リアルタイム音声認識は、長い音声ファイルの非同期文字起こしをサポートしています。これは、会議議事録、インタビューの文字起こし、通話の再生などのシナリオに適しています。

制限事項:
  • Qwen-Audio-ASR-Filetrans/Fun-ASR / Qwen3-ASR-Filetrans / Paraformer:単一の音声ファイルは最大 2 GB のサイズ、12 時間の持続時間まで可能です。
  • Qwen-Audio-ASR / Fun-ASR-Flash: 単一の音声ファイルは最大 2 GB、長さは最大 5 分です。
  • Qwen3-ASR-Flash: 単一の音声ファイルは最大 10 MB、長さは最大 5 分です。より長い音声には Qwen-Audio-ASR-Filetrans を使用してください。
  • 話者分離が有効な場合:音声の持続時間を 2 時間以内にしてください。より長い音声は、認識失敗やタイムアウトを引き起こす可能性があります。詳細については、「話者分離」をご参照ください。

呼び出しフロー:長い音声の文字起こしは、3つのステップからなる非同期タスクモデルを使用します。

  1. 文字起こしタスクを送信し、task_id を取得します。
  2. クエリ API をポーリングしてタスクステータスを確認するか、SDK の wait メソッドを使用してタスクが完了するまでブロックします。
  3. タスクが完了した後、返された URL から認識結果の JSON をダウンロードします。

サンプルコードについては、非リアルタイム音声認識の「クイックスタート」のコードをご参照ください。

ストリーミング出力

Qwen-Audio-ASR/Fun-ASR-Flash/Qwen3-ASR-Flash はストリーミング出力をサポートしています。認識が進むにつれて中間結果を返します。これは、リアルタイムの進捗フィードバックが必要なシナリオに適しています。 Qwen-Audio-ASR と Fun-ASR-Flash の HTTP SSE リクエストとレスポンスの形式については、Qwen-Audio-ASR HTTP APIとFun-ASR-Flash HTTP APIをご参照ください。

Qwen-Audio-ASR-Filetrans、Fun-ASR、Qwen3-ASR-Filetrans、Paraformer などの非同期文字起こしモデルは、ストリーミング出力をサポートしていません。タスクをポーリングして最終結果を取得します (詳細については、「長い音声ファイルの処理」をご参照ください)。

有効にする方法:
  • DashScope Python SDK: stream パラメーターを True に設定します。
  • DashScope Java SDK: streamCall API を呼び出します。
  • DashScope HTTP: X-DashScope-SSE ヘッダーを enable に設定します。

ホットワードによる精度の向上

ホットワードは、名前、地名、製品名などのドメイン固有の固有名詞の認識精度を向上させます。ホットワードの作成方法と使用方法の詳細については、「認識精度の向上」をご参照ください。

SDK によって、これらのパラメーターの命名規則は異なります (ディクショナリキー、オブジェクトプロパティ、メソッドなど)。完全なフィールドマッピングについては、各 SDK の API リファレンスをご参照ください。

コンテキスト強調による精度の向上

コンテキスト強調は、会話履歴を ASR モデルに渡すことで、固有名詞の文字起こし精度を大幅に向上させます。この機能の使用方法と結果の例については、「コンテキスト強調」をご参照ください。

話者分離

qwen-audio-3.1-asr-flash で話者分離を有効にするには、speaker_diarization_enabled を使用します。パラメーターとレスポンス構造については、HTTP APIをご参照ください。

話者分離は、音声中の異なる話者を自動的に識別し、文字起こし結果の各文に話者タグを付けます。これは、複数人での会議やインタビューの録音などのシナリオに適しています。

以下の設定と例の対象モデル:Qwen-Audio-ASR-Filetrans、Fun-ASR、Paraformer シリーズ。

有効にする方法: API リクエストで diarization_enabled パラメーターを true に設定します。結果では、各文に話者を識別する speaker_id フィールドが含まれます。

返り値の構造例 (抜粋):

{
  "transcripts": [
    {
      "sentences": [
        { "begin_time": 100, "end_time": 3820, "text": "Hello, let's discuss the project progress today.", "speaker_id": 0 },
        { "begin_time": 3820, "end_time": 6500, "text": "Sure, let me give a quick report first.", "speaker_id": 1 }
      ]
    }
  ]
}

SDK によって、これらのフィールドの命名規則は異なります (ディクショナリキー、オブジェクトプロパティ、メソッドなど)。完全なフィールドマッピングについては、各 SDK の API リファレンスをご参照ください。

重要話者分離が有効な場合、音声の持続時間を 2 時間以内にしてください。より長い音声は、認識失敗やタイムアウトを引き起こす可能性があります。話者分離が無効な場合の音声長の制限については、「長い音声ファイルの処理」をご参照ください。話者分離はモノラル音声のみをサポートします。

完全なフィールド定義については、API リファレンスをご参照ください。

禁止用語フィルタリング

禁止用語フィルタリングは、認識結果内の禁止用語を置き換えまたは削除します。これは、カスタマーサービスの品質検査、コンテンツコンプライアンス、字幕モデレーションなどのシナリオに適しています。

サポート対象モデル:Qwen-Audio-ASR-Filetrans、Fun-ASR、および Paraformer シリーズモデル。

デフォルトの動作: special_word_filter パラメーターが渡されない場合、システムは組み込みの Model Studio 禁止用語リスト を使用します。一致した単語は、同じ長さの * の文字列に置き換えられます。

カスタム構成: special_word_filter は、3 つのサブフィールドを持つ JSON オブジェクトです。

  • filter_with_signed.word_list は、同じ長さの * の文字列で置き換える禁止用語の文字列配列です。たとえば、["test"] を指定した場合、"Please help me test this" は "Please help me **** this" になります。
  • filter_with_empty.word_list: 結果から完全に削除する禁止用語の文字列配列。 たとえば、["start"] を指定すると、"Is the game about to start now" は "Is the game about to now" になります。
  • system_reserved_filter: デフォルトで true になるブール値です。 カスタムリストと合わせて、システム組み込みの禁止用語リストも適用するかどうかを制御します。

構成例:

{
  "special_word_filter": {
    "filter_with_signed": {
      "word_list": ["test"]
    },
    "filter_with_empty": {
      "word_list": ["start", "happen"]
    },
    "system_reserved_filter": true
  }
}

SDK によって、これらのパラメーターの命名規則は異なります (ディクショナリキー、オブジェクトプロパティ、メソッドなど)。完全なフィールドマッピングについては、各 SDK の API リファレンスをご参照ください。

タイムスタンプの取得

非リアルタイム音声認識は、文字起こし結果にタイムスタンプを出力でき、字幕生成、キーワードハイライト、音声/ビデオ編集に役立ちます。Qwen-Audio-ASR-Filetrans、Qwen-Audio-ASR、Fun-ASR、Fun-ASR-Flash、Qwen3-ASR-Filetrans、および Paraformer はすべてタイムスタンプをサポートしていますが、デフォルトの動作と制御方法はモデルによって異なります。

  • Qwen-Audio-ASR-Filetrans/Qwen-Audio-ASR/Fun-ASR/Fun-ASR-Flash/Paraformer:タイムスタンプは常時有効で、無効にすることはできません。
  • Qwen3-ASR-Filetrans: DashScope の非同期呼び出しでのみタイムスタンプがサポートされており、タイムスタンプは常時有効化されています。enable_words リクエストパラメーターを使用してタイムスタンプのレベルをコントロールします。これを false (デフォルト) に設定すると文レベルのタイムスタンプが返され、true に設定すると単語レベルのタイムスタンプが返されます。単語レベルのタイムスタンプは、次の言語のみをサポートしています: 中国語、英語、日本語、韓国語、ドイツ語、フランス語、スペイン語、イタリア語、ポルトガル語、ロシア語。他の言語については、精度は保証されません。

タイムスタンプはミリ秒単位で、2つのレベルで返されます。

  • 文レベル: sentences[].begin_time と sentences[].end_time は、音声内の各文の開始時間と終了時間を示します。
  • 単語レベル: sentences[].words[] 配列では、各要素に begin_time、end_time、および text (その単語のテキスト) が含まれます。

返り値の構造例 (DashScope 非同期タスク API からの抜粋):

{
  "transcripts": [{
    "sentences": [{
      "begin_time": 100,
      "end_time": 3820,
      "text": "Hello, let's discuss the project progress today.",
      "words": [
        { "begin_time": 100, "end_time": 596, "text": "Hello," },
        { "begin_time": 596, "end_time": 844, "text": "let's" }
      ]
    }]
  }]
}

重要音声タイムスタンプは、ミリ秒の整数です (例: 100)。タスクレベルの end_time (タスク完了時間、つまり "2024-09-12 15:11:40.903" のような文字列の日付) と混同しないでください。これらは異なるフィールドです。

SDK によって、これらのフィールドの命名規則は異なります (ディクショナリキー、オブジェクトプロパティ、メソッドなど)。完全なフィールドマッピングについては、各 SDK の API リファレンスをご参照ください。

本番環境への適用

非リアルタイム音声認識を本番環境で適用する際は、以下のベストプラクティスを実践することで、認識品質とシステムの安定性が向上します。

高同時実行シナリオ:ポーリングの代わりにコールバックを使用

Qwen-Audio-ASR-Filetrans、Fun-ASR、Qwen3-ASR-Filetrans、Paraformer などの非同期文字起こしタスクでは、POST /api/v1/services/audio/asr/transcription を介してタスクを送信し、通常はクエリ API GET /api/v1/tasks/{task_id} を定期的に呼び出して結果を取得します。このクエリ API は、デフォルトで 20 QPS、最大で 100 QPS までスケールアップします。高同時実行のバッチシナリオでは、頻繁なポーリングは容易に速度制限を引き起こします。

EventBridge を介してコールバック通知を設定します。タスクが完了すると、Model Studio は設定されたターゲット (HTTP/HTTPS エンドポイントまたは RocketMQ トピック) に dashscope:System:AsyncTaskFinish イベントを自動的にプッシュします。コンシューマーがイベントを受信すると、クエリ API を呼び出す必要がなくなり、頻繁なポーリングによる速度制限のリスクを回避できます。詳細については、「EventBridge コールバック通知の設定」をご参照ください。

サポート対象モデル

  • サポート対象:Qwen-Audio-ASR-Filetrans、Fun-ASR、Qwen3-ASR-Filetrans、Paraformer (すべての非同期文字起こしタスク)。
  • サポート対象外:Qwen3-ASR-Flash (同期またはストリーミング呼び出し。これらは非同期タスクではありません)。

コールバックメッセージの内容

これら 3 つのモデルすべてにおいて、コールバックメッセージの本文では data.contain_result が true に設定され、data.output_result には transcription_url が直接含まれます。コンシューマーはコールバックを受信後、再度 GET /api/v1/tasks/{task_id} を呼び出すことなく認識結果を取得できます。ただし、結果フィールドのパスと構造は 3 つのモデル間で異なります。次の表をご参照ください。

注記コンシューマーを作成する際は、使用するモデルに応じて正しいパスを選択してください。単一のパスをハードコーディングしないでください。障害シナリオでは、data.output_result.output には results/result が含まれなくなり、代わりに code および message フィールドが含まれます。最初に data.task_status を確認してから、結果を読み取ってください。

モデル

送信パラメーター

結果フィールドのパス (コールバック本文に基づく)

usage フィールド

Qwen-Audio-ASR-Filetrans、Fun-ASR

input.file_urls (配列。呼び出しごとに 1 つの URL のみ)

data.output_result.output.results[ ].transcription_url (配列。ファイルごとに 1 つのエントリがあり、subtask_status を含む。 task_metrics も含む)

duration

Paraformer

input.file_urls (配列。呼び出しごとに 1 つの URL のみ)

Qwen-Audio-ASR-Filetrans/Fun-ASR と同じ: data.output_result.output.results[ ].transcription_url

duration

Qwen3-ASR-Filetrans

input.file_url (単一オブジェクト。呼び出しごとに 1 つの URL のみ)

data.output_result.output.result.transcription_url (単一オブジェクト。results[ ] / task_metrics は含まない)

seconds

注意事項

セキュリティ (HTTP/HTTPS 配信):本番環境では、コールバックリクエストをコンシュームする前に、リクエスト内の X-Eventbridge-Signature* ヘッダーフィールドを検証してください。そうしない場合、外部 IP が AsyncTaskFinish イベントを偽造し、偽の認識結果を注入する可能性があります。また、受信側で少なくとも 5 秒の受信タイムアウトを設定してください。RocketMQ 配信方法にはメッセージレベルの署名はなく、そのセキュリティは RocketMQ の認証メカニズムによって保証されます。

配信遅延:タスク完了 (end_time) から配信ターゲット (HTTP/HTTPS エンドポイントまたは RocketMQ トピック) がメッセージを受信するまでの遅延は、通常約 1〜90 秒です。正確な遅延は、EventBridge のリアルタイムの負荷によって異なります。

べき等性:リトライにより、同じイベントが複数回配信される可能性があります。コンシューマー側で、CloudEvents の data.id または data.task_id を重複排除キーとして使用し、べき等な処理を実装してください。

本番環境での推奨事項

  • ファイルホスティング:音声ファイルを Alibaba Cloud OSS にアップロードし、URL で API を呼び出すことを推奨します。ローカルファイルのアップロードは避けてください (ローカルファイルでの呼び出しは 100 QPS に制限されており、スケールアップできません)。
  • 非同期ポーリング:長時間音声の文字起こしでは非同期モデルを使用します。クォータを消費する頻繁なクエリを避けるため、ポーリング間隔を合理的 (2〜5 秒など) に設定してください。20〜100 QPS のクエリ制限を超える必要がある場合は、イベントコールバック通知に切り替えてください。詳細については、「高同時実行シナリオ:ポーリングの代わりにコールバックを使用」をご参照ください。
  • エラー処理:堅牢なリトライメカニズムを実装してください。ネットワークタイムアウトや一時的なサーバー側エラー (5xx) の場合は、指数バックオフ戦略でリトライしてください。
  • ノイズリダクション:ノイズの多い音声の場合は、認識のために送信する前に FFmpeg などのツールで前処理を行ってください。
  • モデルの選択:5 分以内の短い音声には Qwen-Audio-ASR を使用してください。長い音声または非同期処理には Qwen-Audio-ASR-Filetrans を使用してください。

サポートされるモデルとリージョン

シンガポール

以下のモデルを呼び出すには、API キー のシンガポールリージョンを使用します。

  • Qwen-Audio-ASR-Filetrans: qwen-audio-3.1-asr-flash-filetrans, qwen-audio-3.0-asr-flash-filetrans
  • Qwen-Audio-ASR: qwen-audio-3.1-asr-flash, qwen-audio-3.0-asr-flash
  • Fun-ASR: fun-asr (安定版)
  • Fun-ASR-Flash: fun-asr-flash-2026-06-15
  • Qwen3-ASR-Filetrans: qwen3-asr-flash-filetrans (安定版)
  • Qwen3-ASR-Flash: qwen3-asr-flash (安定版)

米国 (バージニア)

以下のモデルを呼び出すには、API キー の米国リージョンを使用します。

Qwen3-ASR-Flash:qwen3-asr-flash(安定版)

中国 (北京)

以下のモデルを呼び出すには、API キー の北京リージョンを使用します。

  • Qwen-Audio-ASR-Filetrans: qwen-audio-3.1-asr-flash-filetrans, qwen-audio-3.0-asr-flash-filetrans
  • Qwen-Audio-ASR: qwen-audio-3.1-asr-flash, qwen-audio-3.0-asr-flash
  • Fun-ASR: fun-asr (安定版)
  • Fun-ASR-Flash: fun-asr-flash-2026-06-15
  • Qwen3-ASR-Filetrans: qwen3-asr-flash-filetrans (安定版)
  • Qwen3-ASR-Flash: qwen3-asr-flash (安定版)
  • Paraformer: paraformer-v2、paraformer-8k-v2

API リファレンス

よくある質問

Q:API にパブリックアクセス可能な音声 URL を提供するにはどうすればよいですか?

Alibaba Cloud Object Storage Service (OSS) を使用します。OSS は、高可用性かつ高信頼性のストレージを提供し、パブリックアクセス URL を生成できます。

生成された URL がパブリックネットワーク経由でアクセス可能であることを確認します:ブラウザで URL を開くか、curl コマンドを使用して、音声ファイルがダウンロードまたは再生されること (HTTP ステータスコード 200) を確認します。

Q:音声フォーマットが要件を満たしているか確認するにはどうすればよいですか?

オープンソースツールである ffprobe を使用すると、音声の詳細情報をすばやく取得できます:

# Query the container format (format_name), codec (codec_name), sample rate (sample_rate), and number of channels (channels) of the audio
ffprobe -v error -show_entries format=format_name -show_entries stream=codec_name,sample_rate,channels -of default=noprint_wrappers=1 your_audio_file.mp3

Q:モデルの要件を満たすように音声を処理するにはどうすればよいですか?

オープンソースツールである FFmpeg を使用して、音声をトリミングまたは変換します:

  • 音声のトリミング:長い音声ファイルからクリップを抽出する
# -i: input file
# -ss 00:01:30: set the trim start time (start at 1 minute 30 seconds)
# -t 00:02:00: set the trim duration (trim 2 minutes)
# -c copy: copy the audio stream directly without re-encoding, which is fast
# output_clip.wav: output file
ffmpeg -i long_audio.wav -ss 00:01:30 -t 00:02:00 -c copy output_clip.wav
  • フォーマットの変換

    たとえば、任意の音声を 16 kHz、16 ビット、モノラルの WAV ファイルに変換するには、次のようにします:

# -i: input file
# -ac 1: set the number of channels to 1 (mono)
# -ar 16000: set the sample rate to 16000 Hz (16 kHz)
# -sample_fmt s16: set the sample format to 16-bit signed integer PCM
# output.wav: output file
ffmpeg -i input.mp3 -ac 1 -ar 16000 -sample_fmt s16 output.wav

Q:認識精度を向上させるにはどうすればよいですか?

以下の要因が認識精度に影響します。各要因を確認し、適宜最適化を行ってください。

主な要因:

  1. 音質:録音デバイスの品質、サンプルレート、環境ノイズは、音声の明瞭度に直接影響します。高品質な音声入力は、正確な認識の基盤となります。
  2. 話者の特徴:ピッチ、話速、アクセント、方言の違い (特に珍しい方言や強い訛り) は、認識の難易度を高めます。
  3. 言語と語彙:混合言語、専門用語、俗語は認識の難易度を高めます。特定分野の用語の精度を向上させるには、ホットワードを設定してください。

最適化方法:

  1. 音質の向上:高性能マイクを使用し、推奨サンプルレートで録音し、環境ノイズやエコーを最小限に抑えてください。
  2. 話者への適応:アクセントが強い、または顕著な方言がある音声の場合は、対応する方言をサポートするモデルを選択してください。
  3. ホットワードの設定:専門用語、固有名詞、および類似の単語に対してホットワードを設定してください。