ストリーミング音声認識
音声データまたはローカル音声ファイルを選択中の AI プロバイダーへ送り、音声認識結果を逐次受け取ります。
前提条件
AIBudsAISDKが初期化済みで、登録済みのプロバイダーが選択されていること。- プロバイダーが
StreamingASRServiceAPIに対応していること。 - 入力バイト列が設定の
audioFormatと一致していること。 languageForSpeechInputを指定する場合は、en-USやzh-CNのようなハイフン区切りの言語識別子を使用すること。
AI を活用して実装
AI で実装
AI でこのワークフローを実装
公式の「AIBuds ストリーミング音声認識の実装」スキルを使い、アプリに合わせて実装します。
https://docs-aibuds.github.io/ja/skills/implement-aibuds-streaming-asr を読み、その指示に従ってください。このスキルで「AIBuds ストリーミング音声認識の実装」をこの iOS プロジェクトに実装し、検証してください。API リファレンス
フレームワーク
AIBudsAI.xcframework
インポート
- Swift
- Objective-C
import AIBudsAI
import AIBudsAIFoundation#import <AIBudsAI/AIBudsAI-Swift.h>宣言
- Swift
- Objective-C
/// 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/// 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.
+ (void)recognizeVoiceData:(NSData * _Nonnull)data
withConfig:(AIBudsStreamingASRConfig * _Nonnull)config
onTranscript:(void (^ _Nullable)(AIBudsStreamSpeechASRModel * _Nonnull))onTranscript
onFailed:(void (^ _Nullable)(NSError * _Nonnull))onFailed
onFinish:(void (^ _Nullable)(void))onFinish;
/// 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.
+ (void)recognizeVoiceFile:(NSString * _Nonnull)filePath
withConfig:(AIBudsStreamingASRConfig * _Nonnull)config
onTranscript:(void (^ _Nullable)(AIBudsStreamSpeechASRModel * _Nonnull))onTranscript
onFailed:(void (^ _Nullable)(NSError * _Nonnull))onFailed
onFinish:(void (^ _Nullable)(void))onFinish;どちらのオーバーロードも AIBudsAISDK が公開し、選択中のプロバイダーの StreamingASRServiceAPI 実装へ処理を渡します。
設定
StreamingASRConfig に次の値を設定します。
| 値 | 説明 |
|---|---|
languageForSpeechInput | 任意の認識言語。省略時は、プロバイダーが現在のアプリ表示言語を使用します。 |
audioFormat | .pcm、.mp3、.wav などの入力形式。 |
enableSpeakerDiarization | 話者区間を識別するかどうか。既定値は false。 |
入力形式には AIAudioFormat を使用します。
| 値 | 入力 |
|---|---|
.pcm | 選択中のプロバイダーが要求するサンプル形式に合った raw PCM 音声。 |
.opus | Opus でエンコードされた音声。 |
.mp3 | MP3 音声。 |
.wav | WAV コンテナの音声。 |
.none / .unknown | 使用可能な形式ではありません。これらの値では認識を開始しないでください。 |
各 StreamSpeechASRModel には、シーケンス、任意の要求 ID、逐次文字起こし、確定フラグ、任意の文字起こしシーケンス、任意の話者区間が含まれます。
使用例
ファイルを認識
- Swift
- Objective-C
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")
}
)AIBudsStreamingASRConfig *config =
[[AIBudsStreamingASRConfig alloc] initWithLanguageForSpeechInput:@"en-US"
audioFormat:AIBudsAIAudioFormatWav
enableSpeakerDiarization:YES];
[AIBudsAISDK recognizeVoiceFile:fileURL.path
withConfig:config
onTranscript:^(AIBudsStreamSpeechASRModel *result) {
NSLog(@"Sequence %ld: %@", (long)result.sequence, result.transcript ?: @"");
if (result.isDefinite) {
NSLog(@"Definite transcript received");
}
}
onFailed:^(NSError *error) {
NSLog(@"Recognition failed: %@", error.localizedDescription);
}
onFinish:^{
NSLog(@"Recognition finished");
}];メモリ上の音声には recognizeVoice(_:config:onTranscript:onFailed:onFinish:) を使用し、Data / NSData と同じコールバック処理を渡します。
注意事項
- 文字起こしは逐次更新され、文が完成する過程で内容が重複する場合があります。UI 表示を組み立てる際は
sequence、transcriptSequence、isDefiniteを使用します。 - 現行 API は完全な
Dataまたはファイルパスを受け取ります。ストリーミングの開始/追加/停止操作や認識デリゲートは公開していません。 onFinishには結果値がありません。完了後に最終テキストが必要な場合は、onTranscriptで受け取った最新の文字起こしを保持してください。- 対応形式、言語、話者分離の動作はプロバイダーによって異なる場合があります。