Paraformer リアルタイム音声認識 Python SDK のパラメーターとインターフェース。
重要このドキュメントは、中国本土 (北京) リージョンにのみ適用されます。モデルを使用するには、中国本土 (北京) リージョンの API キーを使用する必要があります。
重要Alibaba Cloud Model Studio は、中国 (北京) リージョン向けにワークスペース固有ドメインをリリースしました。この新しい専用ドメインにより、推論リクエストのパフォーマンスと安定性が向上します。dashscope.aliyuncs.com から {WorkspaceId}.cn-beijing.maas.aliyuncs.com への移行を推奨します。
{WorkspaceId} を実際の ワークスペース ID に置き換えてください。既存のドメインは引き続き問題なく利用できます。
ユーザーガイド: モデルの概要および選択に関する推奨事項については、「リアルタイム音声認識 - Fun-ASR/Paraformer」をご参照ください。
前提条件
サービスを有効化し、API キーを取得 してください。コード漏洩によるセキュリティリスクを回避するため、コード内に API キーをハードコードせず、環境変数として API キーを構成 することを推奨します。
注記サードパーティのアプリケーションやユーザーに一時的なアクセス権を付与する必要がある場合や、機密データへのアクセスや削除など高リスク操作を厳密に制御したい場合は、一時認証トークン の使用を推奨します。
長期的な API キーと比較して、一時認証トークンは有効期間が短く(60 秒)、セキュリティが高く、一時的な呼び出しシナリオに適しており、API キーの漏洩リスクを効果的に低減できます。
使用方法: コード内で、認証に使用していた API キーを取得した一時認証トークンに置き換えます。
モデル一覧
| paraformer-realtime-v2 | paraformer-realtime-8k-v2 | |
|---|---|---|
| シナリオ | ライブ配信、会議などのシナリオ | 電話オペレーターやボイスメールなどの 8 kHz 音声の認識 |
| サンプリングレート | 任意 | 8kHz |
| 言語 | 中国語(標準中国語および各種方言)、英語、日本語、韓国語、ドイツ語、フランス語、ロシア語 サポートされる中国語方言: 上海語、呉語、閩南語、東北弁、甘粛弁、貴州弁、河南弁、湖北弁、湖南弁、江西弁、寧夏弁、山西弁、陝西弁、山東弁、四川弁、天津弁、雲南弁、広東語 | 中国語 |
| 句読点予測 | ✅ デフォルトでサポートされています。設定は不要です。 | ✅ デフォルトでサポートされています。設定は不要です。 |
| 逆テキスト正規化 (ITN) | ✅ デフォルトでサポートされています。設定は不要です。 | ✅ デフォルトでサポートされています。設定は不要です。 |
| カスタム語彙 | ✅ 詳細については、「ホットワードをカスタマイズする」をご参照ください。 | ✅ 「ホットワードのカスタマイズ」をご参照ください。 |
| 認識言語の指定 | ✅ | ❌ |
| 感情認識 | ❌ | ✅ (使用方法を表示するにはクリック) 感情認識には以下の制約があります:
現在の文の感情と感情の信頼度は、一文ごとの情報 (Sentence) の |
開始方法
Recognition クラスは、非ストリーミングコールと双方向ストリーミングコールのためのメソッドを提供します。要件に応じて、適切なメソッドを選択できます:
- 非ストリーミングコール:ローカルファイルを認識し、完全な結果を一度に返します。これは、事前に録音された音声を処理するのに適しています。
- 双方向ストリーミングコール:音声ストリームを認識し、結果をリアルタイムで出力します。音声ストリームは、マイクなどの外部デバイスから取得することも、ローカルファイルから読み取ることもできます。これは、即時のフィードバックを必要とするシナリオに適しています。
非ストリーミングコール
このメソッドは、ローカルファイルに対してリアルタイム音声テキスト変換タスクを送信します。完全な文字起こし結果が返されるまで、プロセスはブロックされます。
Recognition クラスをインスタンス化し、リクエストパラメーターを設定し、call メソッドをコールして認識または翻訳を実行し、RecognitionResult を取得します。
クリックして完全な例を表示
from http import HTTPStatus
from dashscope.audio.asr import Recognition
# China (Beijing):{WorkspaceId} を実際のワークスペース ID に置き換えてください。設定はリージョンによって異なります。
dashscope.base_websocket_api_url = "wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference"
# 環境変数に API キーを設定していない場合は、次のコード行のコメントを解除し、apiKey をお使いの API キーに置き換えてください。
# import dashscope
# dashscope.api_key = "apiKey"
recognition = Recognition(model='paraformer-realtime-v2',
format='wav',
sample_rate=16000,
# 「language_hints」パラメーターは、paraformer-realtime-v2 モデルでのみサポートされています。
language_hints=['zh', 'en'],
callback=None)
result = recognition.call('{YOUR_AUDIO_FILE}')
if result.status_code == HTTPStatus.OK:
sentences = result.get_sentence()
for sentence in sentences:
print(sentence['text'])
else:
print('Error: ', result.message)
print(
'[Metric] requestId: {}, first package delay ms: {}, last package delay ms: {}'
.format(
recognition.get_last_request_id(),
recognition.get_first_package_delay(),
recognition.get_last_package_delay(),
))
注記非ストリーミングコールでは、result.get_sentence() は文のリスト (List[Dict]) を返します。各要素には、text (認識されたテキスト)、begin_time / end_time (タイムスタンプ)、words (単語ごとのタイムスタンプ) などのフィールドが含まれます。リストを反復処理し、sentence['text'] を使用してプレーンテキストを抽出します。
これは、result.get_sentence() が単一の文 (Dict[str, Any]) を返すストリーミングコールバックとは異なります。詳細については、「Sentence」をご参照ください。
双方向ストリーミングコール
このメソッドは、リアルタイム音声テキスト変換タスクを送信し、コールバックインターフェイスを介してリアルタイムの認識結果を返します。
-
ストリーミング音声認識の開始
Recognition クラスをインスタンス化し、リクエストパラメーターとコールバックインターフェイス (RecognitionCallback) をバインドし、
startメソッドをコールしてストリーミング音声認識を開始します。 -
ストリーミング
Recognition クラスの
send_audio_frameメソッドを繰り返しコールして、ローカルファイルまたはデバイス (マイクなど) からのバイナリ音声ストリームをセグメント単位でサーバーに送信します。音声データが送信されると、サーバーは RecognitionCallback コールバックインターフェイスの
on_eventメソッドを使用して、認識結果をリアルタイムでクライアントに返します。送信する各音声セグメントの長さは約 100 ミリ秒、データサイズは 1 KB から 16 KB の範囲にすることを推奨します。
-
処理の終了
Recognition クラスの
stopメソッドをコールして音声認識を停止します。このメソッドは、コールバックインターフェイス (RecognitionCallback) の
on_completeまたはon_errorコールバックがトリガーされるまで、現在のスレッドをブロックします。
クリックして完全な例を表示
import os
import signal # キーボードイベントの処理用 (「Ctrl+C」を押して録音を終了)
import sys
import dashscope
import pyaudio
from dashscope.audio.asr import *
# China (Beijing):{WorkspaceId} を実際のワークスペース ID に置き換えてください。設定はリージョンによって異なります。
dashscope.base_websocket_api_url = "wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference"
mic = None
stream = None
# 録音パラメーターの設定
sample_rate = 16000 # サンプリングレート (Hz)
channels = 1 # モノラルチャネル
dtype = 'int16' # データ型
format_pcm = 'pcm' # 音声データのフォーマット
block_size = 3200 # バッファごとのフレーム数
def init_dashscope_api_key():
"""
DashScope API キーを設定します。詳細情報:
https://github.com/aliyun/alibabacloud-bailian-speech-demo/blob/master/PREREQUISITES.md
"""
if 'DASHSCOPE_API_KEY' in os.environ:
dashscope.api_key = os.environ[
'DASHSCOPE_API_KEY'] # 環境変数 DASHSCOPE_API_KEY から API キーを読み込みます
else:
dashscope.api_key = '<your-dashscope-api-key>' # API キーを手動で設定します
# リアルタイム音声認識コールバック
class Callback(RecognitionCallback):
def on_open(self) -> None:
global mic
global stream
print('RecognitionCallback open.')
mic = pyaudio.PyAudio()
stream = mic.open(format=pyaudio.paInt16,
channels=1,
rate=16000,
input=True)
def on_close(self) -> None:
global mic
global stream
print('RecognitionCallback close.')
stream.stop_stream()
stream.close()
mic.terminate()
stream = None
mic = None
def on_complete(self) -> None:
print('RecognitionCallback completed.') # 認識完了
def on_error(self, message) -> None:
print('RecognitionCallback task_id: ', message.request_id)
print('RecognitionCallback error: ', message.message)
# オーディオストリームが実行中の場合は停止して閉じます
if 'stream' in globals() and stream.active:
stream.stop()
stream.close()
# プログラムを強制的に終了します
sys.exit(1)
def on_event(self, result: RecognitionResult) -> None:
sentence = result.get_sentence()
if 'text' in sentence:
print('RecognitionCallback text: ', sentence['text'])
if RecognitionResult.is_sentence_end(sentence):
print(
'RecognitionCallback sentence end, request_id:%s, usage:%s'
% (result.get_request_id(), result.get_usage(sentence)))
def signal_handler(sig, frame):
print('Ctrl+C pressed, stop recognition ...')
# 認識を停止
recognition.stop()
print('Recognition stopped.')
print(
'[Metric] requestId: {}, first package delay ms: {}, last package delay ms: {}'
.format(
recognition.get_last_request_id(),
recognition.get_first_package_delay(),
recognition.get_last_package_delay(),
))
# プログラムを強制的に終了します
sys.exit(0)
# main 関数
if __name__ == '__main__':
init_dashscope_api_key()
print('Initializing ...')
# 認識コールバックを作成
callback = Callback()
# 非同期モードで認識サービスをコールします。モデル、フォーマット、
# サンプリングレートなどの認識パラメーターをカスタマイズできます
recognition = Recognition(
model='paraformer-realtime-v2',
format=format_pcm,
# 'pcm'、'wav'、'opus'、'speex'、'aac'、または 'amr'。サポートされているフォーマットはドキュメントで確認できます。
sample_rate=sample_rate,
# 8000 または 16000 がサポートされています。
semantic_punctuation_enabled=False,
callback=callback)
# 認識を開始
recognition.start()
signal.signal(signal.SIGINT, signal_handler)
print("Press 'Ctrl+C' to stop recording and recognition...")
# 「Ctrl+C」が押されるまでキーボードリスナーを作成
while True:
if stream:
data = stream.read(block_size, exception_on_overflow=False)
recognition.send_audio_frame(data)
else:
break
recognition.stop()
import os
import time
from dashscope.audio.asr import *
# China (Beijing):{WorkspaceId} を実際のワークスペース ID に置き換えてください。設定はリージョンによって異なります。
dashscope.base_websocket_api_url = "wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference"
# 環境変数に API キーを設定していない場合は、次のコード行のコメントを解除し、apiKey をお使いの API キーに置き換えてください。
# import dashscope
# dashscope.api_key = "apiKey"
from datetime import datetime
def get_timestamp():
now = datetime.now()
formatted_timestamp = now.strftime("[%Y-%m-%d %H:%M:%S.%f]")
return formatted_timestamp
class Callback(RecognitionCallback):
def on_complete(self) -> None:
print(get_timestamp() + ' Recognition completed') # 認識完了
def on_error(self, result: RecognitionResult) -> None:
print('Recognition task_id: ', result.request_id)
print('Recognition error: ', result.message)
exit(0)
def on_event(self, result: RecognitionResult) -> None:
sentence = result.get_sentence()
if 'text' in sentence:
print(get_timestamp() + ' RecognitionCallback text: ', sentence['text'])
if RecognitionResult.is_sentence_end(sentence):
print(get_timestamp() +
'RecognitionCallback sentence end, request_id:%s, usage:%s'
% (result.get_request_id(), result.get_usage(sentence)))
callback = Callback()
recognition = Recognition(model='paraformer-realtime-v2',
format='wav',
sample_rate=16000,
# 「language_hints」パラメーターは、paraformer-realtime-v2 モデルでのみサポートされています。
language_hints=['zh', 'en'],
callback=callback)
recognition.start()
try:
audio_data: bytes = None
f = open("{YOUR_AUDIO_FILE}", 'rb')
if os.path.getsize("{YOUR_AUDIO_FILE}"):
while True:
audio_data = f.read(3200)
if not audio_data:
break
else:
recognition.send_audio_frame(audio_data)
time.sleep(0.1)
else:
raise Exception(
'The supplied file was empty (zero bytes long)')
f.close()
except Exception as e:
raise e
recognition.stop()
print(
'[Metric] requestId: {}, first package delay ms: {}, last package delay ms: {}'
.format(
recognition.get_last_request_id(),
recognition.get_first_package_delay(),
recognition.get_last_package_delay(),
))
同時コール
Python では、グローバルインタプリタロック (GIL) のため、一度に 1 つのスレッドしか Python コードを実行できません (ただし、一部のパフォーマンス指向のライブラリではこの制限が解除される場合があります)。マルチコアコンピューターのコンピューティングリソースをより有効に活用したい場合は、マルチプロセッシングまたは concurrent.futures.ProcessPoolExecutor を使用することを推奨します。マルチスレッドは、高い同時実行性の場合、SDK のコールレイテンシーを大幅に増加させる可能性があります。
リクエストパラメーター
リクエストパラメーターは、Recognition クラスのコンストラクター (init) で設定します。
パラメーター | タイプ | デフォルト | 必須 | 説明 |
|---|---|---|---|---|
model | str | - | はい | リアルタイム音声認識に使用するモデルです。 詳細については、「モデル一覧」をご参照ください。 |
sample_rate | int | - | はい | 認識対象の音声のサンプルレート(Hz 単位)を設定します。 モデルによって異なります:
|
format | str | - | はい | 認識対象の音声フォーマットを設定します。 サポートされる音声フォーマット: pcm、wav、mp3、opus、speex、aac、amr。 opus/speex: Ogg カプセル化を使用する必要があります。 wav: PCM エンコーディングである必要があります。 amr: AMR-NB タイプのみをサポートします。 |
vocabulary_id | str | - | いいえ | ホットワード ID を設定します。設定しない場合、ホットワードは有効になりません。v2 以降のモデルでは、このフィールドを使用してホットワード ID を設定します。 現在の音声認識セッションでは、このホットワード ID に対応するホットワード情報が適用されます。詳細な使用方法については、「カスタムホットワード」をご参照ください。 |
disfluency_removal_enabled | bool | False | いいえ | フィラー語のフィルターを設定します:
|
language_hints | list[str] | ["zh", "en"] | いいえ | 認識対象の言語コードを設定します。事前に言語を特定できない場合は、未設定のままにしておくと、モデルが自動的に言語を検出します。 現在サポートされている言語コード:
このパラメーターは多言語モデルにのみ適用されます。 詳細については、「モデル一覧」をご参照ください。 |
semantic_punctuation_enabled | bool | False | いいえ | セマンティックセグメンテーションを有効にするかどうかを設定します。デフォルトでは無効です。
セマンティックセグメンテーションは精度が高く、会議の文字起こしなどのシナリオに適しています。VAD(Voice Activity Detection)セグメンテーションは遅延が低く、インタラクティブなシナリオに適しています。
このパラメーターは、モデルが v2 以降の場合にのみ有効になります。 |
max_sentence_silence | int | 800 | いいえ | VAD(Voice Activity Detection)セグメンテーションのサイレンス持続時間しきい値(ms 単位)を設定します。 発話セグメント後のサイレンス持続時間がこのしきい値を超えると、システムは文が終了したと判断します。 パラメーター範囲は 200 ms ~ 6000 ms で、デフォルト値は 800 ms です。 このパラメーターは、 |
multi_threshold_mode_enabled | bool | False | いいえ | このスイッチを有効にすると(true)、VAD セグメンテーションによる長すぎる文の切断を防止します。デフォルトでは無効です。 このパラメーターは、 |
punctuation_prediction_enabled | bool | True | いいえ | 認識結果に自動的に句読点を追加するかどうかを設定します:
このパラメーターは、モデルが v2 以降の場合にのみ有効になります。 |
heartbeat | bool | False | いいえ | サーバーとの長時間接続を維持する必要がある場合、このスイッチで動作を制御します:
このパラメーターは、モデルが v2 以降の場合にのみ有効になります。 このフィールドを使用する場合、SDK バージョンは 1.23.1 以降である必要があります。 |
inverse_text_normalization_enabled | bool | True | いいえ | ITN(逆テキスト正規化)を有効にするかどうかを設定します。 デフォルトでは有効(true)です。有効にすると、漢数字がアラビア数字に変換されます。 このパラメーターは、モデルが v2 以降の場合にのみ有効になります。 |
callback | RecognitionCallback | - | いいえ |
主要なインターフェイス
Recognition クラス
Recognition クラスは from dashscope.audio.asr import * を使用してインポートされます。
| メンバーメソッド | メソッドシグネチャ | 説明 |
|---|---|---|
call | | ローカルファイルを使用する非ストリーミング呼び出しです。このメソッドは、音声ファイル全体が読み取られるまで現在のスレッドをブロックします。ファイルには読み取り権限が必要です。 認識結果は |
start | | 音声認識を開始します。 これは、現在のスレッドをブロックしない、コールバックベースのストリーミングリアルタイム認識メソッドです。 |
send_audio_frame | | 音声ストリームをプッシュします。毎回プッシュされる音声ストリームは、大きすぎたり小さすぎたりしないようにしてください。各音声パケットの長さは約 100 ms、サイズは 1 KB から 16 KB の間にすることを推奨します。 コールバックインターフェイス (RecognitionCallback) の on_event メソッドで認識結果を取得できます。 |
stop | | 音声認識を停止します。このメソッドは、サービスが受信したすべての音声を認識し、タスクが完了するまでブロックします。 |
get_last_request_id | | リクエスト ID を取得します。これは、コンストラクターが呼び出された後 (オブジェクトが作成された後) に使用できます。 |
get_first_package_delay | | 最初のパケットのレイテンシーを取得します。これは、最初の音声パケットを送信してから最初の認識結果パケットを受信するまでのレイテンシーです。タスク完了後にこれを使用します。 |
get_last_package_delay | | 最後のパケットのレイテンシーを取得します。これは、 |
コールバックインターフェイス (RecognitionCallback)
双方向ストリーミング呼び出し中に、サーバーはコールバックを使用して主要なプロセス情報とデータをクライアントに返します。返された情報とデータを処理するために、コールバックメソッドを実装する必要があります。
クリックして例を表示
class Callback(RecognitionCallback):
def on_open(self) -> None:
print('接続に成功しました')
def on_event(self, result: RecognitionResult) -> None:
# 認識結果を受信するロジックを実装します
pass
def on_complete(self) -> None:
print('タスクが完了しました')
def on_error(self, result: RecognitionResult) -> None:
print('例外が発生しました: ', result)
def on_close(self) -> None:
print('接続が閉じられました')
callback = Callback()
| メソッド | パラメーター | 戻り値 | 説明 |
|---|---|---|---|
| なし | なし | このメソッドは、サーバーとの接続が確立された直後に呼び出されます。 |
|
| なし | このメソッドは、サービスが応答を送信したときに呼び出されます。 |
| なし | なし | このメソッドは、すべての認識結果が返された後に呼び出されます。 |
|
| なし | このメソッドは、例外が発生したときに呼び出されます。 |
| なし | なし | このメソッドは、サービスが接続を閉じた後に呼び出されます。 |
応答結果
認識結果(RecognitionResult)
RecognitionResult は、双方向ストリーミング呼び出しまたは非ストリーミング呼び出しにおける、単一のリアルタイム認識結果を表します。
| メンバーメソッド | メソッドシグネチャ | 説明 |
|---|---|---|
get_sentence | | 現在認識されている文とタイムスタンプ情報を取得します。このメソッドは、単一の文の場合は Dict[str, Any] 型、複数の文の場合は List[Any] 型を返します。 詳細については、「文 (Sentence)」をご参照ください。 |
get_request_id | | リクエスト ID を取得します。 |
is_sentence_end | | 指定された文が終了したかどうかを判定します。 |
文 (Sentence)
Sentence クラスのメンバーは以下のとおりです。
パラメーター | 型 | 説明 |
|---|---|---|
begin_time | int | 文の開始時刻 (ミリ秒単位)。 |
end_time | int | 文の終了時刻 (ミリ秒単位)。 |
text | str | 認識されたテキスト。 |
words | 単語のタイムスタンプ情報 (Word) のリスト | 単語のタイムスタンプ情報。 |
emo_tag | str | 現在の文の感情:
感情認識には以下の制約があります:
|
emo_confidence | 浮動小数点数 | 現在の文で認識された感情の信頼度。値の範囲は 0.0 から 1.0 です。値が大きいほど、信頼度が高いことを示します。 感情認識には以下の制約があります:
|
単語のタイムスタンプ情報(Word)
Word クラスのメンバーは次のとおりです。
パラメーター | 型 | 説明 |
|---|---|---|
begin_time | int | 単語の開始時刻 (ミリ秒単位)。 |
end_time | int | 単語の終了時刻 (ミリ秒単位)。 |
text | str | 単語。 |
punctuation | str | 句読点。 |
エラーコード
エラーが発生した場合は、「エラーコード」を参照してトラブルシューティングを行ってください。
問題が解決しない場合は、開発者コミュニティ に参加し、問題を報告して Request ID を提供してください。
その他の例
その他の例については、GitHub をご参照ください。
よくある質問
機能
Q: 長時間のサイレンス中にサーバーとの長時間接続を維持するにはどうすればよいですか?
リクエストパラメーター heartbeat を true に設定し、サーバーに継続的にサイレント音声を送信します。
サイレント音声とは、音声信号を含まない音声ファイルまたはデータストリームを指します。サイレント音声は、Audacity や Adobe Audition などの音声編集ソフトウェアや、FFmpeg などのコマンドラインツールを使用して生成できます。
Q: 音声をサポートされているフォーマットに変換するにはどうすればよいですか?
FFmpeg ツール を使用できます。詳細な使用方法については、FFmpeg 公式サイトをご参照ください。
# 基本的な変換コマンド(汎用テンプレート)
# -i: 入力ファイルパス。例: audio.wav
# -c:a: 音声コーデック。例: aac、libmp3lame、pcm_s16le
# -b:a: ビットレート(品質制御)。例: 192k、320k
# -ar: サンプルレート。例: 44100(CD)、48000、16000
# -ac: チャンネル数。例: 1(モノラル)、2(ステレオ)
# -y: 既存のファイルを上書き(値は不要)
ffmpeg -i input_audio.ext -c:a codec_name -b:a bitrate -ar sample_rate -ac channels output.ext
# 例: WAV → MP3(オリジナル品質を保持)
ffmpeg -i input.wav -c:a libmp3lame -q:a 0 output.mp3
# 例: MP3 → WAV(16 ビット PCM 標準フォーマット)
ffmpeg -i input.mp3 -c:a pcm_s16le -ar 44100 -ac 2 output.wav
# 例: M4A → AAC(Apple 音声の抽出/変換)
ffmpeg -i input.m4a -c:a copy output.aac # 再エンコードせずに直接抽出
ffmpeg -i input.m4a -c:a aac -b:a 256k output.aac # 高品質のために再エンコード
# 例: FLAC ロスレス → Opus(高圧縮)
ffmpeg -i input.flac -c:a libopus -b:a 128k -vbr on output.opus
Q: 各文の時間範囲を確認できますか?
はい。音声認識結果には各文の開始時刻および終了時刻のタイムスタンプが含まれており、これを使用して各文の時間範囲を確認できます。
Q:ローカルファイル (録音済みの音声ファイル) を認識するにはどうすればよいですか?
ローカルファイルを認識する方法は 2 つあります:
-
ローカルファイルパスを直接渡す:この方法では、ファイルの処理が完了した後に、完全な認識結果を返します。即時のフィードバックが必要なシナリオには適していません。
Recognition クラスの
callメソッドにファイルパスを渡して、音声ファイルを直接認識します。詳細については、「非ストリーミング呼び出し」をご参照ください。 -
ローカルファイルをバイナリ ストリームに変換して認識する:この方法では、ファイルの処理中に認識結果をストリームとして返します。即時のフィードバックが必要なシナリオに適しています。
Recognition クラスの
send_audio_frameメソッドを使用して、バイナリ ストリームをサーバーに送信し、認識できます。詳細については、「双方向ストリーミング呼び出し」をご参照ください。
トラブルシューティング
Q: 音声が認識されない(認識結果がない)原因は何ですか?
-
リクエストパラメーター内の音声フォーマット(
format)およびサンプルレート(sampleRate/sample_rate)が正しく設定され、パラメーター制約に準拠しているか確認してください。以下は一般的なエラー例です:- 音声ファイルの拡張子が .wav ですが、実際のフォーマットは MP3 であり、リクエストパラメーター
formatが mp3 に設定されている(不正確なパラメーター設定)。 - 音声のサンプルレートが 3600 Hz ですが、リクエストパラメーター
sampleRate/sample_rateが 48000 に設定されている(不正確なパラメーター設定)。
音声のコンテナ、コーデック、サンプルレート、チャンネルなどの情報を取得するには、ffprobe ツールを使用できます:
- 音声ファイルの拡張子が .wav ですが、実際のフォーマットは MP3 であり、リクエストパラメーター
ffprobe -v error -show_entries format=format_name -show_entries stream=codec_name,sample_rate,channels -of default=noprint_wrappers=1 input.xxx
-
paraformer-realtime-v2モデルを使用する場合、language_hintsで設定された言語が音声の実際の言語と一致しているか確認してください。例: 音声は実際に中国語ですが、
language_hintsがen(英語)に設定されている。 -
上記のすべてのチェックに合格すれば、特定の単語に対する認識精度を向上させるためにカスタムホットワードを使用できます。