このトピックでは、Paraformer 録音ファイル認識 Python SDK のパラメーターと API の詳細について説明します。
このドキュメントは、「中国 (北京)」 リージョンにのみ適用されます。モデルを使用するには、API キーを「中国 (北京)」リージョンから取得する必要があります。
ユーザーガイド:モデルの概要と選択方法については、「音声ファイル認識 - Fun-ASR/Paraformer」をご参照ください。
前提条件
Model Studio を有効化し、API キーを作成済みであること。セキュリティリスクを防ぐため、API キーをコードにハードコーディングするのではなく、環境変数としてエクスポートしてください。
説明サードパーティのアプリケーションやユーザーに一時的なアクセス権限を付与する場合、または機密データへのアクセスや削除などのリスクの高い操作を厳密に制御したい場合は、一時的な認証トークンを使用することを推奨します。
長期的な API キーと比較して、一時的な認証トークンは有効期間が短い (60 秒) ため、より安全です。これらは一時的な呼び出しシナリオに適しており、API キー漏洩のリスクを効果的に低減できます。
一時的なトークンを使用するには、コード内の認証に使用される API キーを一時的な認証トークンに置き換えます。
モデル
paraformer-v2 | paraformer-8k-v2 | |
シナリオ | ライブストリーミングや会議などの多言語認識シナリオ | 電話カスタマーサービスやボイスメールなどの中国語認識シナリオ |
サンプルレート | 任意 | 8 kHz |
言語 | 中国語 (標準語および各種方言)、英語、日本語、韓国語、ドイツ語、フランス語、ロシア語 サポートされている中国語の方言:上海語、呉語、閩南語、東北方言、甘粛方言、貴州方言、河南方言、湖北方言、湖南方言、江西方言、寧夏方言、山西方言、陝西方言、山東方言、四川方言、天津方言、雲南方言、広東語 | 中国語 |
句読点予測 | ✅ デフォルトでサポート、設定不要 | ✅ デフォルトでサポート、設定不要 |
逆テキスト正規化 (ITN) | ✅ デフォルトでサポート、設定不要 | ✅ デフォルトでサポート、設定不要 |
カスタムホットワード | ✅ 詳細については、「カスタムホットワード」をご参照ください | ✅ 詳細については、「カスタムホットワード」をご参照ください |
認識言語の指定 | ✅ | ❌ |
制限事項
このサービスは、ローカルの音声または動画ファイルの直接アップロードをサポートしていません。また、base64 エンコードされた音声もサポートしていません。入力ソースは、HTTP または HTTPS プロトコルをサポートするインターネット経由でアクセス可能なファイル URL である必要があります。例:https://your-domain.com/file.mp3。
SDK を使用して Object Storage Service (OSS) に保存されているファイルにアクセスする場合、oss:// プレフィックスを持つ一時的な URL は使用できません。
RESTful API を使用して OSS に保存されているファイルにアクセスする場合、oss:// プレフィックスを持つ一時的な URL を使用できます:
一時的な URL は 48 時間有効で、有効期限が切れると使用できなくなります。本番環境では使用しないでください。
アップロード認証情報を取得するための API は 100 QPS に制限されており、スケールアウトをサポートしていません。本番環境、高同時実行シナリオ、またはストレステストシナリオでは使用しないでください。
本番環境では、Alibaba Cloud OSS などの安定したストレージサービスを使用して、長期的なファイルの可用性を確保し、レート制限の問題を回避してください。
URL は file_urls パラメーターを使用して指定できます。1 回のリクエストで最大 100 個の URL をサポートします。
音声フォーマット
aac、amr、avi、flac、flv、m4a、mkv、mov、mp3、mp4、mpeg、ogg、opus、wav、webm、wma、およびwmv重要すべての音声および動画フォーマットとそのバリアントに対して正しい認識を保証することはできません。これは、すべての可能性をテストすることが現実的でないためです。ファイルが期待される音声認識結果を生成することを確認するために、ファイルをテストすることを推奨します。
音声サンプルレート
サンプルレートはモデルによって異なります:
paraformer-v2 は任意のサンプルレートをサポートします
paraformer-8k-v2 は 8 kHz のサンプルレートのみをサポートします
音声ファイルのサイズと長さ
音声ファイルはサイズが 2 GB、長さが 12 時間を超えることはできません。
これらの制限を超えるファイルを処理するには、前処理を行ってサイズを小さくすることができます。前処理のベストプラクティスについては、「動画ファイルを前処理してファイル文字起こし効率を向上させる (音声ファイル認識シナリオ向け)」をご参照ください。
バッチ処理用の音声ファイル数
1 回のリクエストで最大 100 個のファイル URL をサポートします。
認識可能な言語
モデルによって異なります:
paraformer-v2:
中国語 (標準語および各種方言):上海語、呉語、閩南語、東北方言、甘粛方言、貴州方言、河南方言、湖北方言、湖南方言、江西方言、寧夏方言、山西方言、陝西方言、山東方言、四川方言、天津方言、雲南方言、広東語
英語
日本語
韓国語
paraformer-8k-v2 は中国語のみをサポートします
はじめに
Transcription クラスは、タスクを非同期で送信し、タスクが完了するのを同期的に待機し、タスクの実行結果を非同期でクエリするためのメソッドを提供します。録音ファイル認識には、次の 2 つの方法を使用できます:
非同期タスクの送信 + タスク完了の同期待機:タスクを送信した後、タスクが完了して認識結果が返されるまで現在のスレッドはブロックされます。
非同期タスクの送信 + タスク実行結果の非同期クエリ:タスクを送信した後、必要なときにクエリタスクインターフェイスを呼び出すことで、タスクの実行結果を取得できます。
非同期タスクの送信 + タスク完了の同期待機
コアクラス (Transcription) の
async_callメソッドを呼び出し、リクエストパラメーターを設定します。説明ファイル文字起こしサービスは、API を通じて送信されたタスクをベストエフォート方式で処理します。タスクが送信されると、キューイング (
PENDING) 状態になります。キューイング時間はキューの長さとファイルの長さに依存し、正確に決定することはできませんが、通常は数分以内です。タスクの処理が開始されると、音声認識プロセスはリアルタイム再生の数百倍の速さになります。認識結果とダウンロード URL は、タスク完了後 24 時間有効です。この期間を過ぎると、タスクのクエリや結果のダウンロードはできません。
コアクラス (Transcription) の
waitメソッドを呼び出して、タスクが完了するのを同期的に待機します。タスクのステータスには
PENDING、RUNNING、SUCCEEDED、FAILEDがあります。タスクのステータスがPENDINGまたはRUNNINGの場合、waitメソッドはブロックされます。タスクのステータスがSUCCEEDEDまたはFAILEDの場合、waitメソッドはブロックされなくなり、タスクの実行結果を返します。waitメソッドは TranscriptionResponse を返します。
非同期タスクの送信 + タスク実行結果の非同期クエリ
コアクラス (Transcription) の
async_callメソッドを呼び出し、リクエストパラメーターを設定します。説明ファイル文字起こしサービスは、API を通じて送信されたタスクをベストエフォート方式で処理します。タスクが送信されると、キューイング (
PENDING) 状態になります。キューイング時間はキューの長さとファイルの長さに依存し、正確に決定することはできませんが、通常は数分以内です。タスクの処理が開始されると、音声認識プロセスはリアルタイム再生の数百倍の速さになります。認識結果とダウンロード URL は、タスク完了後 24 時間有効です。この期間を過ぎると、タスクのクエリや結果のダウンロードはできません。
最終的なタスク結果を取得するまで、コアクラス (Transcription) の
fetchメソッドをループで呼び出します。タスクのステータスが
SUCCEEDEDまたはFAILEDの場合、ポーリングを停止して結果を処理します。fetchメソッドは TranscriptionResponse を返します。
リクエストパラメーター
コアクラス (Transcription) の async_call メソッドを使用してリクエストパラメーターを設定できます。
パラメーター | タイプ | デフォルト値 | 必須 | 説明 |
model | str | - | はい | 音声/動画ファイルの文字起こしに使用される Paraformer モデル名を指定します。詳細については、「モデル」をご参照ください。 |
file_urls | list[str] | - | はい | 音声/動画ファイルの文字起こし用の URL のリスト。HTTP/HTTPS プロトコルをサポートします。1 回のリクエストで最大 100 個の URL をサポートします。 音声ファイルが Alibaba Cloud OSS に保存されている場合、SDK は oss:// プレフィックスで始まる一時的な URL をサポートしません。 |
vocabulary_id | str | - | いいえ | 最新のホットワードの ID。最新の v2 シリーズモデルはこのパラメーターと言語設定をサポートします。このホットワード ID に対応するホットワードは、現在の音声認識で有効になります。この機能はデフォルトで無効になっています。この機能の使用方法の詳細については、「カスタムホットワード」をご参照ください。 |
channel_id | list[int] | [0] | いいえ | マルチトラック音声ファイルで認識するオーディオトラックのインデックスを指定します。インデックスは 0 から始まります。たとえば、[0] は最初のトラックのみが認識されることを示し、[0, 1] は最初と 2 番目の両方のトラックが認識されることを示します。このパラメーターを省略すると、デフォルトで最初のトラックが処理されます。 重要 指定された各オーディオトラックは個別に課金されます。たとえば、1 つのファイルに対して [0, 1] をリクエストすると、2 つの個別の料金が発生します。 |
disfluency_removal_enabled | bool | False | いいえ | フィラーワードをフィルターします。デフォルトでは無効です。 |
timestamp_alignment_enabled | bool | False | いいえ | タイムスタンプアライメントを有効にします。デフォルトでは無効です。 |
special_word_filter | str | - | いいえ | 音声認識中に処理する禁止用語を指定し、異なる禁止用語に対して異なる処理方法をサポートします。 このパラメーターを渡さない場合、システムは組み込みの禁止用語フィルタリングロジックを有効にします。検出結果で Alibaba Cloud Model Studio 禁止用語リスト (中国語) に一致する単語は、同数の このパラメーターが渡されると、次の禁止用語処理戦略を実装できます:
このパラメーターの値は、次の構造を持つ JSON 文字列である必要があります: JSON フィールドの説明:
|
language_hints | list[str] | ["zh", "en"] | いいえ | 認識する音声の言語コードを指定します。 このパラメーターは paraformer-v2 モデルにのみ適用されます。 サポートされている言語コード:
|
diarization_enabled | bool | False | いいえ | 話者分離の自動化。この機能はデフォルトで無効になっています。 この機能はモノラル音声にのみ適用されます。マルチチャンネル音声は話者分離をサポートしていません。 この機能を有効にすると、認識結果に
|
speaker_count | int | - | いいえ | 話者数の参照値。値は 2 から 100 までの整数 (2 と 100 を含む) である必要があります。 このパラメーターは、話者分離が有効になった後 ( デフォルトでは、話者数は自動的に決定されます。このパラメーターを設定した場合、アルゴリズムが指定された話者数を出力しようとするのを補助するだけであり、この数が必ず出力されることを保証するものではありません。 |
応答結果
TranscriptionResponse
TranscriptionResponse は、task_id や task_status などのタスクの基本情報と実行結果をカプセル化します。実行結果は output 属性に対応します。詳細については、「TranscriptionOutput」をご参照ください。
次の表に、主要なパラメーターを示します:
パラメーター | 説明 |
status_code | HTTP リクエストの状態コード。 |
code |
|
message |
|
task_id | タスク ID。 |
task_status | タスクのステータス。 ステータスは タスクに複数のサブタスクが含まれている場合、いずれかのサブタスクが成功すると、タスク全体のステータスは |
results | サブタスクの認識結果。 |
subtask_status | サブタスクのステータス。 ステータスは |
file_url | 認識された音声の URL。 |
transcription_url | 音声認識結果に対応する URL。 認識結果は JSON ファイルに保存されます。 |
TranscriptionOutput
TranscriptionOutput は TranscriptionResponse の output 属性に対応し、現在のタスク実行結果を表します。
次の表に、主要なパラメーターを示します:
パラメーター | 説明 |
code | エラーコードを表します。エラーコードと |
message | エラーメッセージを表します。エラーコードと |
task_id | タスク ID。 |
task_status | タスクのステータス。 ステータスは タスクに複数のサブタスクが含まれている場合、いずれかのサブタスクが成功すると、タスク全体のステータスは |
results | サブタスクの認識結果。 |
subtask_status | サブタスクのステータス。 ステータスは |
file_url | 認識された音声の URL。 |
transcription_url | 音声認識結果に対応する URL。 認識結果は JSON ファイルに保存されます。 |
認識結果の説明
認識結果は JSON ファイルとして保存されます。
次の表に、主要なパラメーターを示します:
パラメーター | タイプ | 説明 |
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 | 単語の後に予測される句読点 (もしあれば)。 |
主要なインターフェイス
コアクラス (Transcription)
Transcription は from dashscope.audio.asr import Transcription を使用してインポートできます。
メンバーメソッド | メソッドシグネチャ | 説明 |
async_call | | 音声認識タスクを非同期で送信します。 このメソッドは TranscriptionResponse を返します。 |
wait | | タスクが完了するまで (タスクステータスが このメソッドは TranscriptionResponse を返します。 |
fetch | | タスクの結果を非同期で取得します。 このメソッドは 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": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/sensevoice/long_audio_demo_cn.mp3",
"transcription_url": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/prod/paraformer-v2/20241216/xxxx",
"subtask_status": "SUCCEEDED"
},
{
"file_url": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/sensevoice/rich_text_exaple_1.wav",
"code": "InvalidFile.DownloadFailed",
"message": "音声ファイルをダウンロードできません。",
"subtask_status": "FAILED"
}
],
"task_metrics": {
"TOTAL": 2,
"SUCCEEDED": 1,
"FAILED": 1
}
}その他の例
その他の例については、音声の例に関する GitHub リポジトリをご参照ください。
よくある質問
機能
Q:Base64 エンコードされた音声はサポートされていますか?
いいえ、サポートされていません。このサービスは、インターネット経由でアクセス可能な URL からの音声認識のみをサポートします。バイナリストリームやローカルファイルはサポートしていません。
Q:音声ファイルを公開アクセス可能な URL として提供するにはどうすればよいですか?
以下の一般的な手順に従ってください。具体的なプロセスは、使用するストレージプロダクトによって異なる場合があります。音声を OSS にアップロードすることを推奨します。
SDK を使用して OSS に保存されているファイルにアクセスする場合、oss:// プレフィックスを持つ一時的な URL は使用できません。
RESTful API を使用して OSS に保存されているファイルにアクセスする場合、oss:// プレフィックスを持つ一時的な URL を使用できます:
一時的な URL は 48 時間有効で、有効期限が切れると使用できなくなります。本番環境では使用しないでください。
アップロード認証情報を取得するための API は 100 QPS に制限されており、スケールアウトをサポートしていません。本番環境、高同時実行シナリオ、またはストレステストシナリオでは使用しないでください。
本番環境では、Alibaba Cloud OSS などの安定したストレージサービスを使用して、長期的なファイルの可用性を確保し、レート制限の問題を回避してください。
Q:認識結果を取得するのにどのくらい時間がかかりますか?
タスクが送信されると、PENDING 状態になります。キューイング時間はキューの長さとファイルの長さに依存し、正確に決定することはできませんが、通常は数分以内です。長い音声ファイルはより多くの処理時間を必要とします。
トラブルシューティング
エラーが発生した場合は、「エラーコード」の情報を参照してください。
Q:認識結果が音声の再生と同期しない場合はどうすればよいですか?
A:リクエストパラメーター timestamp_alignment_enabled を true に設定します。これにより、タイムスタンプアライメントが有効になり、認識結果が音声再生と同期します。
Q:継続的にポーリングしても結果を取得できないのはなぜですか?
これはレート制限が原因である可能性があります。クォータの引き上げをリクエストするには、開発者グループに参加してください。
Q:音声が認識されない (認識結果がない) のはなぜですか?
音声がフォーマットとサンプルレートの要件を満たしているか確認してください。
paraformer-v2モデルを使用している場合は、language_hintsパラメーターが正しく設定されているか確認してください。上記を確認しても問題が解決しない場合は、カスタムホットワードを使用して特定の単語の認識を向上させることができます。
その他の質問
詳細については、GitHub のよくある質問をご参照ください。