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

Alibaba Cloud Model Studio:Paraformer 非リアルタイム音声認識 Python SDK

最終更新日:Oct 27, 2026

Paraformer Python SDK を使用して、DashScope API で音声ファイルと動画ファイルの文字起こしを行います。

重要このドキュメントは、中国本土 (北京) リージョンにのみ適用されます。モデルを使用するには、中国本土 (北京) リージョンの API キー が必要です。

重要Alibaba Cloud Model Studio は、中国 (北京) リージョン向けにワークスペース固有ドメインをリリースしました。この新しい専用ドメインにより、推論リクエストのパフォーマンスと安定性が向上します。dashscope.aliyuncs.com から {WorkspaceId}.cn-beijing.maas.aliyuncs.com への移行を推奨します。

{WorkspaceId} を実際の ワークスペース ID に置き換えてください。既存のドメインは引き続き問題なく利用できます。

ユーザーガイド:非リアルタイム音声認識

前提条件

サービスを有効化し、API キーを取得 してください。コード漏洩によるセキュリティリスクを回避するため、コード内に API キーをハードコードせず、環境変数として API キーを構成 することを推奨します。

注記サードパーティのアプリケーションやユーザーに一時的なアクセス権を付与する必要がある場合や、機密データへのアクセスや削除など高リスク操作を厳密に制御したい場合は、一時認証トークン の使用を推奨します。

長期的な API キーと比較して、一時認証トークンは有効期間が短く(60 秒)、セキュリティが高く、一時的な呼び出しシナリオに適しており、API キーの漏洩リスクを効果的に低減できます。

使用方法: コード内で、認証に使用していた API キーを取得した一時認証トークンに置き換えます。

クイックスタート

コアクラス (Transcription) は、2つの文字起こしアプローチをサポートしています。

  • 非同期送信 + 同期待機:タスクを送信し、完了して結果が返るまでブロックします。
  • 非同期送信 + 非同期ポーリング:タスクを送信し、いつでも結果をポーリングします。

非同期送信 + 同期待機

image
  1. コアクラス (Transcription) の async_call メソッドを呼び出し、リクエストパラメーターを設定します。

    注記

    • ファイル文字起こしサービスは、API を通じて送信されたタスクをベストエフォート方式で処理します。送信後、タスクはキューイング中 (PENDING) 状態になります。キュー時間はキューの長さとファイルの長さに依存し、正確に見積もることはできませんが、通常は数分以内に完了します。処理が開始されると、音声認識はリアルタイムの数百倍の速度で完了します。
    • 各タスクの完了後、認識結果と URL ダウンロードリンクは 24 時間有効です。有効期限が切れると、以前に提供された URL を通じてタスクをクエリしたり、結果をダウンロードしたりすることはできません。
  2. コアクラス (Transcription) の wait メソッドを呼び出し、タスクが完了するまで同期的に待機します。

    タスクステータスには、PENDING、RUNNING、SUCCEEDED、FAILED があります。wait メソッドを呼び出すと、タスクが PENDING または RUNNING の間はブロックされます。タスクが SUCCEEDED または FAILED になると、wait は結果を返します。

    wait メソッドは TranscriptionResponse を返します。

クリックして完全な例を表示

import os
import json
import dashscope

# API キーを環境変数に設定していない場合は、次の行を実際の API キーに置き換えてください:api_key="sk-xxx"
# China (Beijing):{WorkspaceId} を実際のワークスペース ID に置き換えてください。設定はリージョンによって異なります。
client = dashscope.Client(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="cn-beijing",
)

# 録音ファイル認識タスクを送信し、タスクの完了まで同期的に待機します
job = client.audio.asr.transcribe(
    ['{YOUR_AUDIO_URL}'],
    model='paraformer-v2',
    parameters={'language_hints': ['zh', 'en']}  # 「language_hints」パラメーターは、paraformer-v2 モデルでのみサポートされています。
)

print(json.dumps(job.model_dump(), indent=4, ensure_ascii=False))
print('transcription done!')

非同期送信 + 非同期ポーリング

image
  1. コアクラス (Transcription) の async_call メソッドを呼び出し、リクエストパラメーターを設定します。

    注記

    • ファイル文字起こしサービスは、API を通じて送信されたタスクをベストエフォート方式で処理します。送信後、タスクはキューイング中 (PENDING) 状態になります。キュー時間はキューの長さとファイルの長さに依存し、正確に見積もることはできませんが、通常は数分以内に完了します。処理が開始されると、音声認識はリアルタイムの数百倍の速度で完了します。
    • 各タスクの完了後、認識結果と URL ダウンロードリンクは 24 時間有効です。有効期限が切れると、以前に提供された URL を通じてタスクをクエリしたり、結果をダウンロードしたりすることはできません。
  2. タスクが完了するまで、コアクラス (Transcription) の fetch メソッドをポーリングします。

    ステータスが SUCCEEDED または FAILED になったらポーリングを停止し、結果を処理します。

    fetch メソッドは TranscriptionResponse を返します。

クリックして完全な例を表示

import os
import json
import dashscope
# China (Beijing):{WorkspaceId} を実際のワークスペース ID に置き換えてください。設定はリージョンによって異なります。
client = dashscope.Client(
    # API キーを環境変数に設定していない場合は、次の行を実際の API キーに置き換えてください:api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="cn-beijing",
)

# 録音ファイル認識タスクを送信します
job = client.audio.asr.jobs.create(
    model='paraformer-v2',
    file_urls=['{YOUR_AUDIO_URL}'],
    parameters={'language_hints': ['zh', 'en']}  # 「language_hints」パラメーターは、paraformer-v2 モデルでのみサポートされています。
)

# 最終結果を取得するまでタスクを繰り返しクエリします
while True:
    if job.status == 'SUCCEEDED' or job.status == 'FAILED':
        break
    job = client.audio.asr.jobs.fetch(job.task_id)

print(json.dumps(job.model_dump(), indent=4, ensure_ascii=False))
print('transcription done!')

リクエストパラメーター

コアクラス (Transcription) の async_call メソッドにこれらのパラメーターを渡します。

パラメータータイプデフォルト必須説明

model

文字列

必須

Paraformer による音声ファイルおよび動画ファイルの文字起こしに使用するモデル名です。サポートされているモデルについては、リンク先をご参照ください。

file_urls

list[str]

必須

音声ファイルと動画ファイルの文字起こし用 URL のリストです。HTTP および HTTPS プロトコルに対応しています。1 回のリクエストで指定できる URL は 1 つのみです。

音声ファイルが Alibaba Cloud OSS に保存されている場合、SDK は oss:// プレフィックスを持つ一時的な URL をサポートしません。

vocabulary_id

文字列

任意

カスタム語彙の ID です。v2 シリーズのモデルに対応しており、言語設定が必要です。デフォルトでは無効になっています。詳細については、「カスタム語彙」をご参照ください。

channel_id

list[int]

[0]

任意

マルチトラック音声ファイルで認識するオーディオトラックのインデックスを指定します。インデックスは 0 から始まります。例えば、[0] は最初のトラックを認識することを意味し、[0, 1] は最初のトラックと 2 番目のトラックの両方を同時に認識することを意味します。このパラメーターを省略した場合、デフォルトで最初のトラックのみが処理されます。

重要指定された各トラックは独立して課金されます。例えば、1 つのファイルに対して [0, 1] をリクエストすると、2 回分の料金が発生します。

disfluency_removal_enabled

ブール値

False

任意

フィラーワードをフィルターします。デフォルトでは無効になっています。

timestamp_alignment_enabled

ブール値

False

任意

タイムスタンプアライメントを有効にします。デフォルトでは無効になっています。

special_word_filter

文字列

任意

音声認識中に処理する禁止用語を指定し、異なる禁止用語に対して異なる処理方法を設定できます。

このパラメーターが提供されない場合、システムは組み込みの禁止用語フィルタリングロジックを使用し、認識結果で Alibaba Cloud Model Studio 禁止用語リスト に一致する単語は、同じ長さの * に置き換えられます。

このパラメーターが提供される場合、以下の禁止用語処理戦略を実装できます:

  • * に置き換え:一致する禁止用語を同じ長さの * に置き換えます。
  • 直接フィルター:一致する禁止用語を認識結果から完全に削除します。

このパラメーターの値は、次の構造を持つ JSON 文字列である必要があります:

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

JSON フィールドの説明:

  • filter_with_signed

    • 型:Object。

    • 必須:いいえ。

    • 説明:* に置き換える禁止用語のリストを設定します。認識結果で一致する単語は、同じ長さの * に置き換えられます。

    • 例:上記の JSON を使用すると、「Help me test this code」の音声認識結果は「Help me **** this code」になります。

    • 内部フィールド:

      • word_list:置き換える禁止用語をリストする文字列の配列。
  • filter_with_empty

    • 型:Object。

    • 必須:いいえ。

    • 説明:認識結果から削除 (フィルター) する禁止用語のリストを設定します。一致する単語は完全に削除されます。

    • 例:上記の JSON を使用すると、「The game is about to start, right?」の音声認識結果は「The game is about to, right?」になります。

    • 内部フィールド:

      • word_list:完全に削除 (フィルター) する禁止用語をリストする文字列の配列。
  • system_reserved_filter

    • 型:Boolean。
    • 必須:いいえ。
    • デフォルト:true。
    • 説明:システムの組み込み禁止用語ルールを有効にするかどうか。true に設定すると、システムの組み込み禁止用語フィルタリングロジックも有効になり、認識結果で Alibaba Cloud Model Studio 禁止用語リスト に一致する単語は、同じ長さの * に置き換えられます。

language_hints

list[str]

["zh", "en"]

任意

認識する音声の言語コードを指定します。

このパラメーターは paraformer-v2 モデルにのみ適用されます。

サポートされている言語コード:

  • zh:中国語
  • en:英語
  • ja:日本語
  • yue:広東語
  • ko:韓国語
  • de:ドイツ語
  • fr:フランス語
  • ru:ロシア語

diarization_enabled

ブール値

False

任意

自動話者分離。デフォルトでは無効です。

モノラル音声にのみ適用されます。マルチチャンネル音声は話者分離をサポートしていません。

この機能が有効な場合、認識結果には異なる話者を区別するための speaker_id フィールドが含まれます。

注記話者分離を有効にする場合、音声の長さが 2 時間を超えないようにすることを推奨します。超えると認識が失敗したり、タイムアウトしたりする可能性があります。

speaker_id の例については、「認識結果の説明」をご参照ください。

speaker_count

整数

任意

参考話者数です。値の範囲は 2~100 の整数です。

diarization_enabled が true の場合にのみ有効です。

デフォルトでは自動的に決定されます。このパラメーターはアルゴリズムのヒントとして使用されますが、正確な数を保証するものではありません。

応答

TranscriptionResponse

TranscriptionResponse には、task_id、task_status、および output プロパティに実行結果が含まれます。TranscriptionOutput をご参照ください。

クリックして TranscriptionResponse の構造例を表示

async_call が返す TranscriptionResponse には、submit_time や scheduled_time は含まれません。

{
    "status_code":200,
    "request_id":"251aceab-a6aa-9fc4-b7f7-0cc6d3e2a9f3",
    "code":null,
    "message":"",
    "output":{
        "task_id":"7d0a58a3-1dbe-4de9-8cff-5f48213128b0",
        "task_status":"PENDING"
    },
    "usage":null
}

submit_time と scheduled_time を取得するには、async_call() の戻り値を直接使用するのではなく、wait() または fetch() メソッドを使用してください。wait() または fetch() が返す TranscriptionResponse:

{
    "status_code":200,
    "request_id":"251aceab-a6aa-9fc4-b7f7-0cc6d3e2a9f3",
    "code":null,
    "message":"",
    "output":{
        "task_id":"7d0a58a3-1dbe-4de9-8cff-5f48213128b0",
        "task_status":"PENDING",
        "submit_time":"2025-02-13 16:55:08.573",
        "scheduled_time":"2025-02-13 16:55:08.592",
        "task_metrics":{
            "TOTAL":1,
            "SUCCEEDED":0,
            "FAILED":0
        }
    },
    "usage":null
}
{
    "status_code":200,
    "request_id":"d9d530f1-853c-9848-a5f1-f5de59086ff7",
    "code":null,
    "message":"",
    "output":{
        "task_id":"6351feef-9694-45d2-9d32-63454f2ffb8d",
        "task_status":"RUNNING",
        "submit_time":"2025-02-13 17:31:20.681",
        "scheduled_time":"2025-02-13 17:31:20.703",
        "task_metrics":{
            "TOTAL":1,
            "SUCCEEDED":0,
            "FAILED":0
        }
    },
    "usage":null
}
{
    "status_code":200,
    "request_id":"16668704-6702-9e03-8ab7-a32a5d7bb095",
    "code":null,
    "message":"",
    "output":{
        "task_id":"6351feef-9694-45d2-9d32-63454f2ffb8d",
        "task_status":"SUCCEEDED",
        "submit_time":"2025-02-13 17:31:20.681",
        "scheduled_time":"2025-02-13 17:31:20.703",
        "end_time":"2025-02-13 17:31:21.867",
        "results":[
            {
                "file_url":"{YOUR_AUDIO_URL}",
                "transcription_url":"https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/prod/paraformer-v2/20250213/17%3A31/20ee4e4f-0404-4806-b617-c7d4c62eed19-1.json?Expires=1739525481&OSSAccessKeyId=YOUR_ACCESS_KEY_ID&Signature=YOUR_SIGNATURE",
                "subtask_status":"SUCCEEDED"
            }
        ],
        "task_metrics":{
            "TOTAL":1,
            "SUCCEEDED":1,
            "FAILED":0
        }
    },
    "usage":{
        "duration":9
    }
}
{
    "status_code":200,
    "request_id":"16668704-6702-9e03-8ab7-a32a5d7bb095",
    "code":null,
    "message":"",
    "output":{
        "task_id": "7bac899c-06ec-4a79-8875-xxxxxxxxxxxx",
        "task_status": "FAILED",
        "submit_time": "2024-12-16 16:30:59.170",
        "scheduled_time": "2024-12-16 16:30:59.204",
        "end_time": "2024-12-16 16:31:02.375",
        "results": [
            {
                "file_url": "{YOUR_AUDIO_URL}",
                "code": "InvalidFile.DownloadFailed",
                "message": "The audio file cannot be downloaded.",
                "subtask_status": "FAILED"
            }
        ],
        "task_metrics": {
            "TOTAL": 1,
            "SUCCEEDED": 0,
            "FAILED": 1
        }
    },
    "usage":{
        "duration":9
    }
}

主要なパラメーター:

パラメーター

説明

status_code

HTTP リクエストのステータスコード。

code

  • 最上位の code は無視できます。

  • output.results 内の code フィールドはエラーコードです。message フィールドと併せて使用し、エラーコード を参照してトラブルシューティングを行ってください。

message

  • 最上位の message は無視できます。

  • output.results 配下の message はエラーメッセージです。code フィールドと併せて使用し、エラーコード を参照してトラブルシューティングを行ってください。

task_id

タスク ID。

task_status

タスクステータス。

ステータスには PENDING、RUNNING、SUCCEEDED、FAILED の 4 種類があります。

タスクに複数のサブタスクが含まれる場合、いずれかのサブタスクが成功すると、タスク全体のステータスは SUCCEEDED になります。各サブタスクの結果を判断するには、subtask_status フィールドを確認してください。

results

サブタスクの音声認識結果。

subtask_status

サブタスクのステータス。

ステータスには PENDING、RUNNING、SUCCEEDED、FAILED の 4 種類があります。

file_url

認識する音声ファイルの URL。

transcription_url

音声認識結果に対応する URL。

音声認識結果は JSON ファイルとして保存されます。transcription_url の URL からファイルをダウンロードするか、HTTP リクエストでその内容を読み取ります。JSON ファイルの内容の詳細については、「認識結果の説明」をご参照ください。

TranscriptionOutput

TranscriptionOutput オブジェクトは、タスクの実行結果を含む、TranscriptionResponse オブジェクトの output プロパティです。

クリックして TranscriptionOutput の構造例を表示

PENDING ステータス

{
    "task_id":"f2f7c2fa-0cd9-4bb2-a283-27b26ee4bb67",
    "task_status":"PENDING",
    "submit_time":"2025-02-13 17:59:27.754",
    "scheduled_time":"2025-02-13 17:59:27.789",
    "task_metrics":{
        "TOTAL":1,
        "SUCCEEDED":0,
        "FAILED":0
    }
}

RUNNING ステータス

{
    "task_id":"f2f7c2fa-0cd9-4bb2-a283-27b26ee4bb67",
    "task_status":"RUNNING",
    "submit_time":"2025-02-13 17:59:27.754",
    "scheduled_time":"2025-02-13 17:59:27.789",
    "task_metrics":{
        "TOTAL":1,
        "SUCCEEDED":0,
        "FAILED":0
    }
}

SUCCEEDED ステータス

{
    "task_id":"f2f7c2fa-0cd9-4bb2-a283-27b26ee4bb67",
    "task_status":"SUCCEEDED",
    "submit_time":"2025-02-13 17:59:27.754",
    "scheduled_time":"2025-02-13 17:59:27.789",
    "end_time":"2025-02-13 17:59:28.828",
    "results":[
        {
            "file_url":"{YOUR_AUDIO_URL}",
            "transcription_url":"https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/prod/paraformer-v2/20250213/17%3A59/70e737cc-bf8c-418b-b0c8-83fab192a0fa-1.json?Expires=1739527168&OSSAccessKeyId=YOUR_ACCESS_KEY_ID&Signature=YOUR_SIGNATURE",
            "subtask_status":"SUCCEEDED"
        }
    ],
    "task_metrics":{
        "TOTAL":1,
        "SUCCEEDED":1,
        "FAILED":0
    }
}

FAILED ステータス

code はエラーコード、message はエラーメッセージです。エラー発生時にのみ返されます。エラーコードをご参照ください。

{
    "task_id": "7bac899c-06ec-4a79-8875-xxxxxxxxxxxx",
    "task_status": "FAILED",
    "submit_time": "2024-12-16 16:30:59.170",
    "scheduled_time": "2024-12-16 16:30:59.204",
    "end_time": "2024-12-16 16:31:02.375",
    "results": [
        {
            "file_url": "{YOUR_AUDIO_URL}",
            "code": "InvalidFile.DownloadFailed",
            "message": "The audio file cannot be downloaded.",
            "subtask_status": "FAILED"
        }
    ],
    "task_metrics": {
        "TOTAL": 1,
        "SUCCEEDED": 0,
        "FAILED": 1
    }
}

重要なパラメーター:

パラメーター

説明

code

エラーコード。message フィールドと併せて使用します。エラーコードをご参照ください。

message

エラーメッセージ。code フィールドと併せて使用します。エラーコードをご参照ください。

task_id

タスク ID。

task_status

タスクステータス。

ステータスには PENDING、RUNNING、SUCCEEDED、FAILED の 4 種類があります。

タスクに複数のサブタスクが含まれる場合、いずれかのサブタスクが成功すると、タスク全体のステータスは SUCCEEDED になります。各サブタスクの結果を判断するには、subtask_status フィールドを確認してください。

results

サブタスクの音声認識結果。

subtask_status

サブタスクのステータス。

ステータスには PENDING、RUNNING、SUCCEEDED、FAILED の 4 種類があります。

file_url

認識する音声ファイルの URL。

transcription_url

音声認識結果に対応する URL。

音声認識結果は JSON ファイルとして保存されます。transcription_url からファイルをダウンロードするか、HTTP リクエストでその内容を読み取ります。JSON ファイルの内容の詳細については、「認識結果の説明」をご参照ください。

認識結果の説明

認識結果は 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":3720,
            "text":"Hello world, this is the Alibaba speech laboratory.",
            "sentences":[
                {
                    "begin_time":100,
                    "end_time":3820,
                    "text":"Hello world, this is the Alibaba speech laboratory.",
                    "sentence_id":1,
                    "speaker_id":0, //このフィールドは自動話者分離が有効な場合にのみ表示されます
                    "words":[
                        {
                            "begin_time":100,
                            "end_time":596,
                            "text":"Hello ",
                            "punctuation":""
                        },
                        {
                            "begin_time":596,
                            "end_time":844,
                            "text":"world",
                            "punctuation":", "
                        }
                        // その他の内容はここで省略
                    ]
                }
            ]
        }
    ]
}

主要なパラメーターは以下の通りです:

パラメーター

型

説明

audio_format

string

ソースファイルの音声フォーマット。

channels

array[integer]

ソースファイルのオーディオトラックのインデックス情報。モノラル音声の場合は [0]、デュアルトラック音声の場合は [0, 1] などを返します。

original_sampling_rate

integer

ソースファイル内の音声のサンプリングレート (Hz)。

original_duration

integer

ソースファイルの元の音声の長さ (ms)。

channel_id

integer

文字起こし結果のオーディオトラックのインデックス、0 から始まります。

content_duration

integer

オーディオトラック内で音声として識別されたコンテンツの長さ (ms)。

Paraformer 音声認識モデルサービスは、オーディオトラック内で音声として識別されたコンテンツのみを文字起こしおよび計測し、それに応じて課金します。非音声コンテンツは計測も課金もされません。通常、音声コンテンツの長さは元の音声の長さよりも短くなります。音声コンテンツが存在するかどうかの判断は AI モデルによって行われるため、実際の状況とは多少のずれが生じる可能性があります。

transcript

string

段落レベルの音声文字起こし結果。

sentences

array

文レベルの音声文字起こし結果。

words

array

単語レベルの音声文字起こし結果。

begin_time

integer

開始タイムスタンプ (ms)。

end_time

integer

終了タイムスタンプ (ms)。

text

string

音声文字起こし結果。

speaker_id

integer

現在の話者のインデックス、0 から始まり、異なる話者を区別するために使用されます。

このフィールドは、話者分離が有効な場合にのみ認識結果に表示されます。

punctuation

string

単語の後に予測される句読点 (もしあれば)。

API リファレンス

コアクラス (Transcription)

Transcription クラスをインポートします: from dashscope.audio.asr import Transcription。

メンバーメソッドメソッドシグネチャ説明

async_call

def transcribe(self,
               file_urls: List[str],
               *,
               model: str = "paraformer-v2",
               parameters: Dict = None,
               phrase_id: str = None,
               timeout: float = ...,
               ...) -> Job

音声認識タスクを非同期で送信します。

このメソッドは TranscriptionResponse を返します。

wait

def wait(self,
         task: Union[str, Job],
         poll_interval: float = 1,
         timeout: float = 86400,
         ...) -> Job

非同期タスクが完了するまで (ステータスが SUCCEEDED または FAILED になるまで)、現在のスレッドをブロックします。

このメソッドは TranscriptionResponse を返します。

fetch

def fetch(self,
          task_id: str,
          ...) -> Job

非同期タスクの実行結果を照会します。

このメソッドは TranscriptionResponse を返します。

エラーコード

エラーが発生した場合は、「エラーコード」を参照してトラブルシューティングを行ってください。

問題が解決しない場合は、開発者コミュニティ に参加して問題を報告し、さらなる調査のためにリクエスト ID を提供してください。

タスクに複数のサブタスクが含まれている場合、いずれかのサブタスクが成功すれば、全体のタスクステータスは SUCCEEDED とマークされます。各サブタスクの結果を判断するには、subtask_status フィールドを確認する必要があります。

エラー応答の例:

{
    "task_id": "7bac899c-06ec-4a79-8875-xxxxxxxxxxxx",
    "task_status": "SUCCEEDED",
    "submit_time": "2024-12-16 16:30:59.170",
    "scheduled_time": "2024-12-16 16:30:59.204",
    "end_time": "2024-12-16 16:31:02.375",
    "results": [
        {
            "file_url": "{YOUR_AUDIO_URL}",
            "code": "InvalidFile.DownloadFailed",
            "message": "The audio file cannot be downloaded.",
            "subtask_status": "FAILED"
        }
    ],
    "task_metrics": {
        "TOTAL": 1,
        "SUCCEEDED": 0,
        "FAILED": 1
    }
}

その他の例

GitHub でその他の例をご覧ください。

よくある質問

機能

Q:Base64 エンコードされた音声をサポートしていますか?

いいえ。Base64 エンコードされた音声はサポートされていません。パブリックにアクセス可能な URL を介してアクセスできる音声のみがサポートされています。バイナリストリームや直接のローカルファイル認識はサポートされていません。

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

一般的に、以下の手順に従います (これは一般的なアプローチであり、詳細はストレージ製品によって異なります。音声を Alibaba Cloud OSS にアップロードすることを推奨します):

1. ストレージとホスティング方法を選択する

例:

  • Object Storage Service (推奨):

    • クラウドプロバイダーのオブジェクトストレージサービス (例:Alibaba Cloud OSS) を使用して音声ファイルをバケットにアップロードし、パブリックアクセスに設定します。
    • 利点:高可用性、CDN アクセラレーションのサポート、簡単な管理。
  • Web サーバー:

    • HTTP/HTTPS アクセスをサポートする Web サーバー (Nginx や Apache など) に音声ファイルを配置します。
    • 利点:小規模プロジェクトやローカルテストに適しています。
  • コンテンツデリバリーネットワーク (CDN):

    • CDN に音声ファイルをホストし、CDN が提供する URL を介してアクセスします。
    • 利点:ファイル配信の高速化、高同時実行シナリオに適しています。

2. 音声ファイルをアップロードする

選択したストレージ/ホスティング方法に基づいて音声ファイルをアップロードします。例:

  • Object Storage Service:

    • クラウドプロバイダーのコンソールにログインし、バケットを作成します。
    • 音声ファイルをアップロードし、ファイルの権限を「パブリック読み取り」に設定するか、一時的なアクセスリンクを生成します。
  • Web サーバー:

    • サーバーの指定されたディレクトリ (例:/var/www/html/audio/) に音声ファイルを配置します。
    • ファイルが HTTP/HTTPS を介してアクセス可能であることを確認します。

3. パブリックにアクセス可能な URL を生成する

例:

  • Object Storage Service:

    • アップロード後、システムは自動的にパブリックアクセス URL を生成します (通常は https://<bucket-name>.<region>.aliyuncs.com/<file-name> の形式)。
    • よりユーザーフレンドリなドメインが必要な場合は、カスタムドメインをバインドして HTTPS を有効にすることができます。
  • Web サーバー:

    • ファイルアクセス URL は通常、サーバーアドレスとファイルパスを組み合わせたものです (例:https://your-domain.com/audio/file.mp3)。
  • CDN:

    • CDN アクセラレーションを設定した後、CDN が提供する URL を使用します (例:https://cdn.your-domain.com/audio/file.mp3)。

4. URL のアクセシビリティを確認する

パブリックネットワーク環境で、生成された URL がアクセス可能であることを確認します。例:

  • ブラウザで URL を開き、音声ファイルが再生できるか確認します。
  • ツール (curl や Postman など) を使用して、URL が正しい HTTP 応答 (状態コード 200) を返すか確認します。

SDK を使用する場合、音声ファイルが Alibaba Cloud OSS に保存されている場合、oss:// プレフィックスを持つ一時的な URL はサポートされません。

RESTful API を使用する場合、音声ファイルが Alibaba Cloud OSS に保存されている場合、oss:// プレフィックスを持つ一時的な URL はサポートされます:

  • 一時的な URL は 48 時間有効で、有効期限が切れると使用できません。本番環境では使用しないでください。
  • アップロード認証情報を取得するための API は 100 QPS に制限されており、スケーリングアウトをサポートしていません。本番環境、高同時実行シナリオ、またはストレステストシナリオでは使用しないでください。
  • 本番環境では、OSS などの安定したストレージサービスを使用して、長期的なファイルの可用性を確保し、レート制限の問題を回避してください。

Q:認識結果を取得するのにどれくらい時間がかかりますか?

送信後、タスクはキューイング中 (PENDING) 状態になります。キュー時間はキューの長さとファイルの長さに依存し、正確に見積もることはできませんが、通常は数分以内に完了します。しばらくお待ちください。長い音声ファイルはより多くの処理時間を必要とします。

トラブルシューティング

エラーについては、「エラーコード」をご参照ください。

Q:認識結果が音声の再生と同期しない場合はどうすればよいですか?

リクエストパラメーターの timestamp_alignment_enabled を true に設定してタイムスタンプキャリブレーションを有効にします。これにより、認識結果が音声の再生と同期します。

Q:タスクで InvalidFile.DownloadFailed エラーが返される場合はどうすればよいですか?

ファイル URL にスペースや中国語などの非 ASCII 文字が含まれていないか確認してください。ファイル名にスペースが含まれる場合 (例:my audio recording.mp4)、各スペースを %20 に置き換え、ファイル名を URL エンコードしてから file_urls パラメーターに渡してください。

Q:継続的なポーリング後も結果を取得できませんか?

これはレート制限が原因である可能性があります。しばらくお待ちください。容量拡張が必要な場合は、開発者コミュニティ に参加して申請してください。

Q:なぜ認識結果がないのですか (音声を認識できない)?
  • 音声が要件 (フォーマット、サンプリングレート) を満たしているか確認してください。
  • paraformer-v2 モデルを使用している場合は、language_hints の設定が正しいか確認してください。
  • 上記のいずれでも問題が解決しない場合は、カスタムホットワードを使用して特定の単語の認識を向上させることができます。

その他の質問

GitHub の Q&A ページをご確認ください。