본문으로 건너뛰기

스트리밍 음성 인식

오디오 데이터 또는 로컬 오디오 파일을 선택한 AI 서비스 제공자에게 보내고 실시간 음성 인식 결과를 받습니다.

사전 요구 사항

  • AIBudsAISDK가 초기화되어 있고 등록된 서비스 제공자가 선택되어 있습니다.
  • 서비스 제공자가 StreamingASRServiceAPI를 지원합니다.
  • 입력 바이트가 설정의 audioFormat과 일치합니다.
  • languageForSpeechInput을 지정할 때는 en-US, zh-CN처럼 하이픈 형식의 언어 식별자를 사용합니다.

AI를 활용해 구현

AI로 구현

AI로 이 워크플로 구현

공식 “AIBuds 스트리밍 음성 인식 구현” 스킬을 사용해 앱에 맞게 구현하세요.

https://docs-aibuds.github.io/ko/skills/implement-aibuds-streaming-asr을 읽고 지침을 따르세요. 이 스킬로 “AIBuds 스트리밍 음성 인식 구현”을 이 iOS 프로젝트에 구현하고 검증하세요.
공식 스킬 보기

API Reference

프레임워크

AIBudsAI.xcframework

Import

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선택한 제공자가 요구하는 샘플 형식의 원시 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 출력을 구성할 때 sequence, transcriptSequence, isDefinite를 사용하세요.
  • 현재 API는 완성된 Data 값 또는 파일 경로를 받습니다. 스트리밍 시작, 추가, 중지 제어나 인식 델리게이트는 제공하지 않습니다.
  • onFinish에는 결과값이 없습니다. 완료 후 최종 텍스트가 필요하면 onTranscript에서 받은 최신 인식문을 저장하세요.
  • 지원 형식, 언어, 화자 분리 동작은 서비스 제공자마다 다를 수 있습니다.