AI-аудиозапись
Запускайте сессию AI-аудиозаписи, координируйте запись на подключённом устройстве, получайте распознанный текст и события в реальном времени, а затем итоговый отчёт.
Жизненный цикл AIAudioRecordingEventType, используемый этой моделью callbacks, описан в разделе «События AI-сессий».
Жизненный цикл AI-аудиозаписи
Запускайте AI-сервис до аудиозаписи устройства, согласуйте оба жизненных цикла и завершайте процесс через callback итогового отчёта.
Предварительные условия
AIBudsAISDKинициализирован, и выбран зарегистрированный поставщик AI-сервисов.- При необходимости авторизация поставщика завершена.
- Устройство подключено и соответствует
DeviceAudioRecordingAPI. - Выбранный поставщик поддерживает
AIAudioRecordingServiceAPI.
Реализация с помощью AI
Реализуйте этот сценарий с AI
Используйте официальный навык «Реализация аудиозаписи ИИ AIBuds» и адаптируйте сценарий к приложению.
Прочитайте и выполните инструкции https://docs-aibuds.github.io/ru/skills/implement-aibuds-ai-audio-recording. Используйте этот навык, чтобы реализовать «Реализация аудиозаписи ИИ AIBuds» в данном iOS-проекте и проверить результат.API Reference
Framework
AIBudsAI.xcframework
Import
- Swift
- Objective-C
import AIBuds
import AIBudsAI
import AIBudsAIFoundation#import <AIBuds/AIBuds-Swift.h>
#import <AIBudsAI/AIBudsAI-Swift.h>Declaration
- Swift
- Objective-C
/// Starts an AI audio recording session.
/// - Parameters:
/// - config: The session configuration.
/// - onStartSuccess: Called with the started session.
/// - onStartFailure: Called when the session cannot start.
/// - onTranscript: Called when speech is transcribed.
/// - onEvent: Called for session-level events.
/// - onError: Called when the running session encounters an error.
/// - onFinish: Called with the completed session report.
public static func startAIAudioRecording(_ config: AIAudioRecordingSessionConfig = .default,
onStartSuccess: ((_ session: AIAudioRecordingSessionConvertible) -> Void)? = nil,
onStartFailure: ((_ error: Error) -> Void)? = nil,
onTranscript: ((_ transcriptData: StreamSpeechASRModel) -> Void)? = nil,
onEvent: ((_ event: AIAudioRecordingEventModel) -> Void)? = nil,
onError: ((_ error: NSError) -> Void)? = nil,
onFinish: ((_ report: AIAudioRecordingReportModel) -> Void)? = nil) -> Void
/// Stops the current AI audio recording service session.
public static func stopAIAudioRecording()/// Starts an AI audio recording session.
/// - Parameters:
/// - config: The session configuration.
/// - onStartSuccess: Called with the started session.
/// - onStartFailure: Called when the session cannot start.
/// - onTranscript: Called when speech is transcribed.
/// - onEvent: Called for session-level events.
/// - onError: Called when the running session encounters an error.
/// - onFinish: Called with the completed session report.
+ (void)startAIAudioRecordingWithConfig:(AIBudsAIAudioRecordingSessionConfig * _Nonnull)config
onStartSuccess:(void (^ _Nullable)(id <AIBudsAIAudioRecordingSessionConvertible> _Nonnull))onStartSuccess
onStartFailure:(void (^ _Nullable)(NSError * _Nonnull))onStartFailure
onTranscript:(void (^ _Nullable)(AIBudsStreamSpeechASRModel * _Nonnull))onTranscript
onEvent:(void (^ _Nullable)(AIBudsAIAudioRecordingEventModel * _Nonnull))onEvent
onError:(void (^ _Nullable)(NSError * _Nonnull))onError
onFinish:(void (^ _Nullable)(AIBudsAIAudioRecordingReportModel * _Nonnull))onFinish;
/// Stops the current AI audio recording service session.
+ (void)stopAIAudioRecording;См. startAIAudioRecording и stopAIAudioRecording.
Конфигурация
AIAudioRecordingSessionConfig предоставляет:
| Свойство | Описание |
|---|---|
recordingScene | Сценарий записи, например .onSite. |
allowRecordingWhileOffline | Можно ли запускать сервис без сети. По умолчанию false. |
enableSpeakerDiarization | Включена ли диаризация говорящих. По умолчанию false. |
languageForSpeechInput | Необязательный идентификатор языка речи. Если не задан, SDK использует язык приложения. |
Примеры использования
Сессия AI-сервиса должна запускаться до начала передачи аудио устройством. При завершении записи пользователем или ошибке остановите обе стороны.
- Swift
- Objective-C
let config = AIAudioRecordingSessionConfig(
recordingScene: .onSite,
allowRecordingWhileOffline: true,
enableSpeakerDiarization: true,
languageForSpeechInput: "en-US"
)
AIBudsAISDK.startAIAudioRecording(
config,
onStartSuccess: { session in
currentSession = session
guard let recordingDevice = device as? DeviceAudioRecordingAPI else {
AIBudsAISDK.stopAIAudioRecording()
return
}
recordingDevice.startAIAudioRecording(.onSite) { success, error in
if !success {
print(error?.localizedDescription ?? "Device recording failed")
AIBudsAISDK.stopAIAudioRecording()
}
}
},
onStartFailure: { error in
print("Session start failed: \(error)")
},
onTranscript: { transcript in
print(transcript.transcript ?? "")
},
onEvent: { event in
print(event)
},
onError: { error in
print(error.localizedDescription)
},
onFinish: { report in
currentSession = nil
print(report)
}
)AIBudsAIAudioRecordingSessionConfig *config =
[[AIBudsAIAudioRecordingSessionConfig alloc] initWithRecordingScene:AIBudsRecordingSceneOnSite
allowRecordingWhileOffline:YES
enableSpeakerDiarization:YES
languageForSpeechInput:@"en-US"];
[AIBudsAISDK startAIAudioRecordingWithConfig:config
onStartSuccess:^(id<AIBudsAIAudioRecordingSessionConvertible> session) {
self.currentSession = session;
id<AIBudsDeviceAudioRecordingAPI> recordingDevice =
(id<AIBudsDeviceAudioRecordingAPI>)self.device;
if (![recordingDevice conformsToProtocol:@protocol(AIBudsDeviceAudioRecordingAPI)]) {
[AIBudsAISDK stopAIAudioRecording];
return;
}
[recordingDevice startAIAudioRecordingWithScene:AIBudsRecordingSceneOnSite
completion:^(BOOL success, NSError *error) {
if (!success) {
NSLog(@"%@",
error.localizedDescription
?: @"Device recording failed");
[AIBudsAISDK stopAIAudioRecording];
}
}];
}
onStartFailure:^(NSError *error) {
NSLog(@"Session start failed: %@", error);
}
onTranscript:^(AIBudsStreamSpeechASRModel *transcript) {
NSLog(@"%@", transcript.transcript ?: @"");
}
onEvent:^(AIBudsAIAudioRecordingEventModel *event) {
NSLog(@"%@", event);
}
onError:^(NSError *error) {
NSLog(@"%@", error.localizedDescription);
}
onFinish:^(AIBudsAIAudioRecordingReportModel *report) {
self.currentSession = nil;
NSLog(@"%@", report);
}];Для остановки вызовите stopAIAudioRecording(_:completion:) подключённого устройства, удалите сохранённую сессию, а затем вызовите AIBudsAISDK.stopAIAudioRecording().
Примечания
- Завершающий callback возвращает
AIAudioRecordingReportModel, а не путь к локальному файлу записи. - Сохраняйте сессию из
onStartSuccessдо завершения операции. onStartFailureсообщает об ошибках запуска, аonError— об ошибках после начала сессии.- SDK не предоставляет метод
isRecording()для этого AI-сервиса. Отслеживайте сохранённую сессию в состоянии приложения.