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

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

最終更新日:Mar 22, 2026

本ガイドでは、Paraformer リアルタイム音声認識 Python ソフトウェア開発キット(SDK)のパラメーターおよびインターフェイスについて説明します。

重要

本ドキュメントは、中国 (北京) リージョンのみに適用されます。モデルを利用するには、中国 (北京) リージョンから取得した API キー を使用する必要があります。

ユーザーガイド: モデルの概要および選択に関するガイダンスについては、「リアルタイム音声認識 — Fun-ASR/Gummy/Paraformer」をご参照ください。

前提条件

  • Model Studio を有効化し、API キーを作成済みである必要があります。コード漏洩によるセキュリティリスクを防止するため、API キーをコード内にハードコーディングしないでください。代わりに、環境変数としてエクスポートしてください。

    説明

    第三者アプリケーションまたはユーザーへの一時的なアクセス許可、あるいは機密データへのアクセスや削除といった高リスク操作を厳密に制御する場合、一時認証トークン を使用してください。

    一時認証トークンは、有効期限が 60 秒と短いため、永続的な API キーよりも安全性が高く、一時的な呼び出しシナリオに最適であり、悪用された API キーによるリスクを大幅に低減できます。

    この方法を使用する場合は、コード内の API キーを一時認証トークンに置き換えてください。

  • DashScope SDK の最新版をインストールしてください。

モデル一覧

paraformer-realtime-v2

paraformer-realtime-8k-v2

シナリオ

ライブ配信および会議

電話カスタマーサポートやボイスメールなど、8 kHz 音声認識を必要とするシナリオ

サンプルレート

任意

8 kHz

対応言語

中国語(標準語および各種方言)、英語、日本語、韓国語、ドイツ語、フランス語、ロシア語

対応中国語方言:上海語、呉語、閩南語、東北官話、甘粛話、貴州話、河南話、湖北話、湖南話、江西話、寧夏話、山西話、陝西話、山東話、四川話、天津話、雲南話、広東語

中国語

句読点予測

✅ デフォルトで有効です。

✅ デフォルトで有効です。

逆テキスト正規化(ITN)

✅ デフォルトで有効です。

✅ デフォルトで有効です。

認識言語の指定

language_hints パラメーターを使用して言語を指定します。

感情認識

✅ (クリックして使い方を表示)

emo_tag および emo_confidence には以下の制約が適用されます:

  • paraformer-realtime-8k-v2 モデルでのみ利用可能です。

  • semantic_punctuation_enabled リクエストパラメーター を使用して意味的句読点機能を無効化する必要があります。デフォルトでは無効です。

  • この感情データは、認識結果 オブジェクトの is_sentence_end メソッドが True を返す場合にのみ返されます。

現在の文の感情および信頼度は、Sentence オブジェクトの emo_tag および emo_confidence フィールドから取得します。

クイックスタート

Recognition クラス は、ノンストリーミング呼び出しおよび双方向ストリーミング呼び出しの両方に対応するメソッドを提供します。ご利用のユースケースに応じて、適切なメソッドを選択してください。

  • ノンストリーミング呼び出し: ローカルファイル を処理し、完全な 認識結果 を単一の応答として返します。このモードは、事前に録音された音声の文字起こしに最適です。

  • 双方向ストリーミング呼び出し: ライブの 音声ストリーム を処理し、リアルタイムで結果を返します。音声ストリーム は、マイク などのデバイスから取得することも、ローカルファイル から読み込むこともできます。このモードは、即時のフィードバックが必要なアプリケーションに最適です。

ノンストリーミング呼び出し

このメソッドでは、単一の 音声認識 タスク を送信します。これは、ローカルファイル を同期的に処理し、完全な 認識結果 が返されるまで実行をブロックします。

image

Recognition クラス をインスタンス化し、リクエストパラメーター をバインドします。call メソッドを呼び出して認識または翻訳を実行し、認識結果(RecognitionResult) を取得します。

完全な例を表示するには、クリックしてください。

例で使用している音声ファイルは:asr_example.wav です。

from http import HTTPStatus
from dashscope.audio.asr import Recognition

# API キーを環境変数として設定していない場合は、
# 次の行のコメントを解除し、「apiKey」を実際のキーに置き換えてください。
# 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('asr_example.wav')
if result.status_code == HTTPStatus.OK:
    print('認識結果:')
    print(result.get_sentence())
else:
    print('エラー: ', result.message)
    
print(
    '[メトリック] requestId: {}, 最初のパッケージ遅延 ms: {}, 最後のパッケージ遅延 ms: {}'
    .format(
        recognition.get_last_request_id(),
        recognition.get_first_package_delay(),
        recognition.get_last_package_delay(),
    ))

双方向ストリーミング呼び出し

このメソッドでは、単一のリアルタイム 音声認識 タスク を送信します。認識結果は、お客様が実装する コールバックインターフェイス を介してリアルタイムで配信されます。

image
  1. ストリーミング音声認識の開始

    Recognition クラス をインスタンス化し、リクエストパラメーター および コールバックインターフェイス(RecognitionCallback) をバインドし、start メソッドを呼び出してストリーミング音声認識を開始します。

  2. 音声データのストリーミング

    Recognition クラスsend_audio_frame メソッドを繰り返し呼び出して、ローカルファイルまたはマイクなどのデバイスからバイナリ音声ストリームを、セグメント単位でサーバーに送信します。

    音声データを送信している間、サーバーは RecognitionCallback コールバックインターフェイスon_event メソッドを介して、認識結果をクライアントにリアルタイムで返します。

    最適なパフォーマンスを得るには、約 100 ミリ秒(サイズは 1 KB ~ 16 KB)の音声チャンクを送信することを推奨します。

  3. 処理の停止

    Recognition クラスstop メソッドを呼び出して音声認識を停止します。

    このメソッドは、コールバックインターフェイス(RecognitionCallback)on_complete または on_error コールバックがトリガーされるまで、現在のスレッドをブロックします。

完全な例を表示するには、クリックしてください。

マイク

import os
import signal  # キーボードイベント(「Ctrl+C」で録音を終了)を処理します。
import sys

import dashscope
import pyaudio
from dashscope.audio.asr import *

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 が押されました。認識を停止中...')
    # 認識の停止
    recognition.stop()
    print('認識が停止しました。')
    print(
        '[メトリック] requestId: {}, 最初のパッケージ遅延 ms: {}, 最後のパッケージ遅延 ms: {}'
        .format(
            recognition.get_last_request_id(),
            recognition.get_first_package_delay(),
            recognition.get_last_package_delay(),
        ))
    # プログラムを強制終了
    sys.exit(0)


# メイン関数
if __name__ == '__main__':
    init_dashscope_api_key()
    print('初期化中...')

    # 認識コールバックの作成
    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("録音および認識を停止するには、「Ctrl+C」を押してください...")
    # マイクから音声を読み取り、認識のために送信するループ。

    while True:
        if stream:
            data = stream.read(3200, exception_on_overflow=False)
            recognition.send_audio_frame(data)
        else:
            break

    recognition.stop()

ローカルファイル

例で使用している音声ファイルは:asr_example.wav です。

import os
import time
from dashscope.audio.asr import *

# API キーを環境変数として設定していない場合は、
# 次の行のコメントを解除し、「apiKey」を実際のキーに置き換えてください。
# 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() + ' 認識完了')  # 認識完了

    def on_error(self, result: RecognitionResult) -> None:
        print('認識タスク ID:', result.request_id)
        print('認識エラー:', 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 文末、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("asr_example.wav", 'rb')
    if os.path.getsize("asr_example.wav"):
        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(
            '指定されたファイルは空です(0 バイト)')
    f.close()
except Exception as e:
    raise e

recognition.stop()

print(
    '[メトリック] requestId: {}, 最初のパッケージ遅延 ms: {}, 最後のパッケージ遅延 ms: {}'
    .format(
        recognition.get_last_request_id(),
        recognition.get_first_package_delay(),
        recognition.get_last_package_delay(),
    ))

同時呼び出し

Python では、グローバル インタープリター ロック (GIL) により、一度に 1 つの スレッド のみが Python コードを実行できます。ただし、パフォーマンス重視のライブラリの中には、この制限を回避できるものもあります。マルチコアプロセッサをより効果的に活用するには、multiprocessing または concurrent.futures.ProcessPoolExecutor を使用します。高い同時実行性の条件下では、マルチスレッド処理 により SDK 呼び出しの遅延が大幅に増加する場合があることに注意してください。

リクエストパラメーター

リクエストパラメーターは、Recognition クラス のコンストラクター(__init__)で設定します。

パラメーター

デフォルト値

必須

説明

model

str

-

はい

リアルタイム音声認識に使用するモデルです。詳細については、「モデル一覧」をご参照ください。

sample_rate

int

-

はい

音声のサンプルレート(Hz 単位)です。

このパラメーターはモデルによって異なります:

  • paraformer-realtime-v2 は任意のサンプルレートをサポートします。

  • paraformer-realtime-8k-v2 は 8000 Hz のみをサポートします。

format

str

-

はい

音声のフォーマットです。

対応音声フォーマット: pcmwavmp3opusspeexaacamr

重要

opus/speex は Ogg カプセル化が必要です。

wav は PCM エンコーディングが必要です。

amr:AMR-NB 形式のみサポートされます。

disfluency_removal_enabled

bool

False

いいえ

不自然な言葉(言い直し、間投詞など)をフィルター処理するかどうかを指定します:

  • true:不自然な言葉をフィルター処理します。

  • false(デフォルト):不自然な言葉をフィルター処理しません。

language_hints

list[str]

["zh", "en"]

いいえ

認識に使用する言語コードを指定します。このパラメーターを設定しない場合、モデルが自動的に言語を検出します。

対応言語コード:

  • zh:中国語

  • en:英語

  • ja:日本語

  • yue:広東語

  • ko:韓国語

  • de:ドイツ語

  • fr:フランス語

  • ru:ロシア語

このパラメーターは多言語モデルにのみ適用されます。詳細については、「モデル一覧」をご参照ください。

semantic_punctuation_enabled

bool

False

いいえ

意味的文分割を有効にするかどうかを指定します。

  • true:意味的文分割を有効にし、音声活動検出(VAD)ベースの分割を無効にします。

  • false(デフォルト):VAD ベースの分割を有効にし、意味的文分割を無効にします。

意味的文分割は精度が高く、会議の文字起こしなどのシナリオに最適です。VAD ベースの分割はレイテンシーが低く、インタラクティブなシナリオに適しています。

semantic_punctuation_enabled パラメーターを調整することで、さまざまなシナリオに応じて音声認識の句読点付与方法を柔軟に切り替えることができます。

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

max_sentence_silence

int

800

いいえ

VAD ベースの分割におけるサイレンス期間のしきい値(ミリ秒単位)を指定します。

音声の一時停止がこのしきい値を超えた場合、システムは文が完了したと判断します。

有効範囲:200 ms ~ 6000 ms。デフォルト値:800 ms。

このパラメーターは、semantic_punctuation_enabledfalse に設定されている v2 以降のモデルにのみ適用されます。

multi_threshold_mode_enabled

bool

False

いいえ

true の場合、このパラメーターにより VAD ベースの分割で過度に長い文が生成されるのを防ぎます。

このパラメーターは、semantic_punctuation_enabledfalse に設定されている v2 以降のモデルにのみ適用されます。

punctuation_prediction_enabled

bool

True

いいえ

認識結果に自動的に句読点を追加するかどうかを指定します:

  • true(デフォルト):句読点を追加します。

  • false:句読点を追加しません。

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

heartbeat

bool

False

いいえ

サーバーとの持続的接続を維持するかどうかを指定します:

  • true:サイレント音声を継続的に送信しても接続を維持します。

  • false(デフォルト):サイレント音声を継続的に送信していても、60 秒のタイムアウト後に接続が終了します。

    サイレント音声とは、音声が含まれていない音声ファイルまたはデータストリームです。Audacity や Adobe Audition などの音声編集ソフトウェア、または FFmpeg などのコマンドラインツールを使用して生成できます。

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

このパラメーターを使用するには、SDK のバージョンが 1.23.1 以降である必要があります。

inverse_text_normalization_enabled

bool

True

いいえ

逆テキスト正規化(ITN)を有効にするかどうかを指定します。

有効にすると、中国語の数字がアラビア数字に変換されます。

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

callback

RecognitionCallback

-

いいえ

RecognitionCallback インターフェイス(ストリーミング結果の処理用)です。

主要インターフェイス

Recognition クラス

Recognition クラスは、from dashscope.audio.asr import * を使用してインポートします。

メンバーメソッド

メソッド署名

説明

call

def call(self, file: str, phrase_id: str = None, **kwargs) -> RecognitionResult

ローカルファイルからのノンストリーミング認識を実行します。このメソッドは、音声ファイル全体が読み込まれるまで現在のスレッドをブロックします。ファイルには読み取り権限が必要です。

RecognitionResult オブジェクトを返します。

start

def start(self, phrase_id: str = None, **kwargs)

音声認識を開始します。

このメソッドは、コールバックベースのリアルタイムストリーミング認識を実行します。現在のスレッドをブロックせず、send_audio_frame および stop と併用する必要があります。

send_audio_frame

def send_audio_frame(self, buffer: bytes)

最適なパフォーマンスを得るには、各音声パケットの持続時間は約 100 ミリ秒、サイズは 1 KB ~ 16 KB であることを推奨します。

認識結果は、RecognitionCallback インターフェイスon_event メソッドを介して返されます。

stop

def stop(self)

音声認識を停止します。このメソッドは、サーバーが受信したすべての音声を認識し、タスクが完了するまで現在のスレッドをブロックします。

get_last_request_id

def get_last_request_id(self)

request_id を取得します。このメソッドは、オブジェクトのインスタンス化後であればいつでも呼び出すことができます。

get_first_package_delay

def get_first_package_delay(self)

最初のパッケージ遅延(First Packet Delay)を取得します。これは、最初の音声パケットを送信してから最初の認識結果を受信するまでのレイテンシーです。タスク完了後にこのメソッドを呼び出してください。

get_last_package_delay

def get_last_package_delay(self)

最後のパッケージ遅延(Last Packet Delay)は、stop コマンドを送信してから最後のパケットに対する認識結果が配信されるまでの経過時間です。このメトリックはタスク完了後に利用可能です。

RecognitionCallback インターフェイス

双方向ストリーミング呼び出し 中、サーバーはコールバックを介して重要な処理情報およびデータをクライアントに返します。サーバーから返されるデータを処理するには、コールバックメソッドを実装する必要があります。

例を表示するには、クリックしてください。

class Callback(RecognitionCallback):
    def on_open(self) -> None:
        print('接続成功')

    def on_event(self, result: RecognitionResult) -> None:
        # 認識結果の受信処理のロジックを実装します。

    def on_complete(self) -> None:
        print('タスク完了')

    def on_error(self, result: RecognitionResult) -> None:
        print('例外が発生しました:', result)

    def on_close(self) -> None:
        print('接続終了')


callback = Callback()

メソッド

パラメーター

戻り値

説明

def on_open(self) -> None

なし

なし

サーバーとの接続が確立された直後に呼び出されます。

def on_event(self, result: RecognitionResult) -> None

result認識結果

なし

サーバーが認識結果を送信したときに呼び出されます。

def on_complete(self) -> None

なし

なし

すべての認識結果が返された後に呼び出されます。

def on_error(self, result: RecognitionResult) -> None

result認識結果

なし

エラーが発生したときに呼び出されます。

def on_close(self) -> None

なし

なし

サーバーが接続を閉じた後に呼び出されます。

応答結果

認識結果(RecognitionResult

RecognitionResult オブジェクトは、双方向ストリーミング呼び出し または ノンストリーミング呼び出し における単一のリアルタイム認識の結果を表します。

メソッド

メソッド署名

説明

get_sentence

def get_sentence(self) -> Union[Dict[str, Any], List[Any]]

現在の文のテキストおよびタイムスタンプ情報を返します。コールバックでは、このメソッドは単一の文に対して Dict[str, Any] オブジェクトを返します。

詳細については、「Sentence」をご参照ください。

get_request_id

def get_request_id(self) -> str

リクエストの ID を返します。

is_sentence_end

@staticmethod
def is_sentence_end(sentence: Dict[str, Any]) -> bool

指定された文が完了しているかどうかを判定します。

Sentence(Sentence

Sentence クラスには、以下のパラメーターが含まれます:

パラメーター

説明

begin_time

int

文の開始時刻(ミリ秒単位)です。

end_time

int

文の終了時刻(ミリ秒単位)です。

text

str

認識されたテキストです。

words

Word オブジェクトのリスト

単語レベルのタイムスタンプ情報を提供します。

emo_tag

str

現在の文の感情:

  • positive:幸せや満足といったポジティブな感情を表します。

  • negative:怒りや悲しみといったネガティブな感情を表します。

  • neutral:ニュートラルまたは無表情な感情を表します。

emo_tag および emo_confidence には以下の制約が適用されます:

  • paraformer-realtime-8k-v2 モデルでのみ利用可能です。

  • semantic_punctuation_enabled リクエストパラメーター を使用して意味的句読点機能を無効化する必要があります。デフォルトでは無効です。

  • この感情データは、認識結果 オブジェクトの is_sentence_end メソッドが True を返す場合にのみ返されます。

emo_confidence

float

認識された感情の信頼度(0.0 ~ 1.0)。値が大きいほど信頼度が高いことを示します。

emo_tag および emo_confidence には以下の制約が適用されます:

  • paraformer-realtime-8k-v2 モデルでのみ利用可能です。

  • semantic_punctuation_enabled リクエストパラメーター を使用して意味的句読点機能を無効化する必要があります。デフォルトでは無効です。

  • この感情データは、認識結果 オブジェクトの is_sentence_end メソッドが True を返す場合にのみ返されます。

Word(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 encoder_name -b:a bit_rate -ar sample_rate -ac num_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  # 256k ビットレートで再エンコーディング
# 例: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:認識結果が一切得られません。

  1. 音声フォーマット(format)およびサンプルレート(sampleRate/sample_rate)の設定が正しく、パラメーター制約を満たしているかを確認してください。以下は一般的なエラー例です:

    • 音声ファイルの拡張子は .wav ですが、実際には MP3 形式であり、リクエストパラメーター format が mp3 に設定されています(誤ったパラメーター設定)。

    • 音声のサンプルレートは 3600 Hz ですが、リクエストパラメーター sampleRate/sample_rate が 48000 に設定されています(誤ったパラメーター設定)。

    音声ファイルのコンテナ、エンコーディング、サンプルレート、チャンネルなどのプロパティ情報を取得するには、ffprobe ツールを使用できます:

    ffprobe -v error -show_entries format=format_name -show_entries stream=codec_name,sample_rate,channels -of default=noprint_wrappers=1 input.xxx
  2. paraformer-realtime-v2 モデルを使用する場合、language_hints で指定した言語が、音声の実際の言語と一致しているかを確認してください。

    例:音声は実際には中国語ですが、language_hintsen(英語)に設定されています。