メインコンテンツまでスキップ

ストリーミング音声認識

音声データまたはローカル音声ファイルを選択中の AI プロバイダーへ送り、音声認識結果を逐次受け取ります。

前提条件

  • AIBudsAISDK が初期化済みで、登録済みのプロバイダーが選択されていること。
  • プロバイダーが StreamingASRServiceAPI に対応していること。
  • 入力バイト列が設定の audioFormat と一致していること。
  • languageForSpeechInput を指定する場合は、en-USzh-CN のようなハイフン区切りの言語識別子を使用すること。

AI を活用して実装

AI で実装

AI でこのワークフローを実装

公式の「AIBuds ストリーミング音声認識の実装」スキルを使い、アプリに合わせて実装します。

https://docs-aibuds.github.io/ja/skills/implement-aibuds-streaming-asr を読み、その指示に従ってください。このスキルで「AIBuds ストリーミング音声認識の実装」をこの iOS プロジェクトに実装し、検証してください。
公式スキルを見る

API リファレンス

フレームワーク

AIBudsAI.xcframework

インポート

Swift
import AIBudsAI
import AIBudsAIFoundation

宣言

Swift
/// Recognizes voice data.
/// - Parameters:
///   - data: The audio data to recognize.
///   - config: The recognition configuration.
///   - onTranscript: Called for each incremental transcript result.
///   - onFailed: Called when recognition fails.
///   - onFinish: Called when recognition finishes.
public static func recognizeVoice(_ data: Data,
                                  config: StreamingASRConfig = .default,
                            onTranscript: ((_ transcriptData: StreamSpeechASRModel) -> Void)? = nil,
                                onFailed: ((_ error: NSError) -> Void)? = nil,
                                onFinish: (() -> Void)? = nil) -> Void

/// Recognizes a voice file.
/// - Parameters:
///   - filePath: The local path of the audio file to recognize.
///   - config: The recognition configuration.
///   - onTranscript: Called for each incremental transcript result.
///   - onFailed: Called when recognition fails.
///   - onFinish: Called when recognition finishes.
public static func recognizeVoice(withFile filePath: String,
                                             config: StreamingASRConfig = .default,
                                       onTranscript: ((_ transcriptData: StreamSpeechASRModel) -> Void)? = nil,
                                           onFailed: ((_ error: NSError) -> Void)? = nil,
                                           onFinish: (() -> Void)? = nil) -> Void

どちらのオーバーロードも AIBudsAISDK が公開し、選択中のプロバイダーの StreamingASRServiceAPI 実装へ処理を渡します。

設定

StreamingASRConfig に次の値を設定します。

説明
languageForSpeechInput任意の認識言語。省略時は、プロバイダーが現在のアプリ表示言語を使用します。
audioFormat.pcm.mp3.wav などの入力形式。
enableSpeakerDiarization話者区間を識別するかどうか。既定値は false

入力形式には AIAudioFormat を使用します。

入力
.pcm選択中のプロバイダーが要求するサンプル形式に合った raw PCM 音声。
.opusOpus でエンコードされた音声。
.mp3MP3 音声。
.wavWAV コンテナの音声。
.none / .unknown使用可能な形式ではありません。これらの値では認識を開始しないでください。

StreamSpeechASRModel には、シーケンス、任意の要求 ID、逐次文字起こし、確定フラグ、任意の文字起こしシーケンス、任意の話者区間が含まれます。

使用例

ファイルを認識

Swift
let config = StreamingASRConfig(
    languageForSpeechInput: "en-US",
    audioFormat: .wav,
    enableSpeakerDiarization: true
)

AIBudsAISDK.recognizeVoice(
    withFile: fileURL.path,
    config: config,
    onTranscript: { result in
        print("Sequence \(result.sequence): \(result.transcript ?? "")")
        if result.isDefinite {
            print("Definite transcript received")
        }
    },
    onFailed: { error in
        print("Recognition failed: \(error.localizedDescription)")
    },
    onFinish: {
        print("Recognition finished")
    }
)

メモリ上の音声には recognizeVoice(_:config:onTranscript:onFailed:onFinish:) を使用し、Data / NSData と同じコールバック処理を渡します。

注意事項

  • 文字起こしは逐次更新され、文が完成する過程で内容が重複する場合があります。UI 表示を組み立てる際は sequencetranscriptSequenceisDefinite を使用します。
  • 現行 API は完全な Data またはファイルパスを受け取ります。ストリーミングの開始/追加/停止操作や認識デリゲートは公開していません。
  • onFinish には結果値がありません。完了後に最終テキストが必要な場合は、onTranscript で受け取った最新の文字起こしを保持してください。
  • 対応形式、言語、話者分離の動作はプロバイダーによって異なる場合があります。