Перейти к основному содержимому

Потоковое распознавание речи

Передавайте аудиоданные или локальный аудиофайл выбранному поставщику AI-сервисов и получайте результаты распознавания речи по мере обработки.

Предварительные условия

  • AIBudsAISDK инициализирован, и выбран зарегистрированный поставщик.
  • Поставщик поддерживает StreamingASRServiceAPI.
  • Входные байты соответствуют audioFormat, указанному в конфигурации.
  • Если задан languageForSpeechInput, используйте идентификатор языка с дефисом, например en-US или zh-CN.

Реализация с помощью AI

Разработка с AI

Реализуйте этот сценарий с AI

Используйте официальный навык «Реализация потокового распознавания речи AIBuds» и адаптируйте сценарий к приложению.

Прочитайте и выполните инструкции https://docs-aibuds.github.io/ru/skills/implement-aibuds-streaming-asr. Используйте этот навык, чтобы реализовать «Реализация потокового распознавания речи AIBuds» в данном iOS-проекте и проверить результат.
Открыть официальный навык

API Reference

Framework

AIBudsAI.xcframework

Import

Swift
import AIBudsAI
import AIBudsAIFoundation

Declaration

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 в формате дискретизации, требуемом выбранным поставщиком.
.opusАудио в кодеке Opus.
.mp3Аудио MP3.
.wavАудио в контейнере WAV.
.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 и используйте ту же обработку callbacks.

Примечания

  • Распознанный текст поступает по частям и может повторяться по мере уточнения фразы. При формировании интерфейса используйте sequence, transcriptSequence и isDefinite.
  • Текущий API принимает готовое значение Data или путь к файлу. Он не предоставляет команд start/append/stop для потока или делегат распознавания.
  • onFinish не содержит результата. Если после завершения нужен итоговый текст, сохраняйте последнее значение из onTranscript.
  • Поддерживаемые форматы, языки и поведение диаризации могут различаться у разных поставщиков.