Синтез речи
Синтезируйте текст через выбранного поставщика AI-сервисов и получайте локальный аудиофайл для воспроизведения или дальнейшей обработки приложением.
Предварительные условия
AIBudsAISDKинициализирован, и выбран зарегистрированный поставщик.- Поставщик поддерживает
TTSServiceAPI. - При необходимости доступны авторизация поставщика и сетевое подключение.
- Согласно контракту публичного SDK запускайте синтез в фоновом потоке.
Реализация с помощью AI
Разработка с AI
Реализуйте этот сценарий с AI
Используйте официальный навык «Реализация синтеза речи AIBuds» и адаптируйте сценарий к приложению.
Прочитайте и выполните инструкции https://docs-aibuds.github.io/ru/skills/implement-aibuds-text-to-speech. Используйте этот навык, чтобы реализовать «Реализация синтеза речи AIBuds» в данном iOS-проекте и проверить результат.API Reference
Framework
AIBudsAI.xcframework
Import
- Swift
- Objective-C
import AIBudsAI
import AIBudsAIFoundation#import <AIBudsAI/AIBudsAI-Swift.h>Declaration
- Swift
- Objective-C
/// Synthesizes text into speech.
/// - Parameters:
/// - text: The text to synthesize.
/// - config: The synthesis configuration.
/// - completion: Called with the task identifier, success state, optional
/// result, and optional error when synthesis completes.
/// - Important: Call this method from a background thread to avoid blocking
/// the main thread.
public static func synthesizeText(_ text: String,
config: TTSConfig = .default,
completion: ((
_ taskId: String?,
_ success: Bool,
_ response: TTSResultModel?,
_ error: NSError?
) -> Void)? = nil) -> Void/// Synthesizes text into speech.
/// - Parameters:
/// - text: The text to synthesize.
/// - config: The synthesis configuration.
/// - completion: Called with the task identifier, success state, optional
/// result, and optional error when synthesis completes.
/// - Important: Call this method from a background thread to avoid blocking
/// the main thread.
+ (void)synthesizeText:(NSString * _Nonnull)text
config:(AIBudsTTSConfig * _Nonnull)config
completion:(void (^ _Nullable)(NSString * _Nullable, BOOL, AIBudsTTSResultModel * _Nullable, NSError * _Nullable))completion;См. synthesizeText.
Конфигурация и результат
TTSConfig предоставляет необязательный speakerId. При значении nil поставщик выбирает голос по умолчанию.
При успешном выполнении TTSResultModel содержит:
| Свойство | Описание |
|---|---|
audioFile | Путь к аудиофайлу относительно каталога Documents приложения. |
audioFilePath | Полный путь к синтезированному аудиофайлу. |
audioFormat | Формат синтезированного аудиофайла. |
Примеры использования
- Swift
- Objective-C
let config = TTSConfig.default
config.speakerId = nil
DispatchQueue.global(qos: .userInitiated).async {
AIBudsAISDK.synthesizeText(
"Hello, how can I help you?",
config: config
) { taskId, success, response, error in
guard success, let response else {
print(error?.localizedDescription ?? "Synthesis failed")
return
}
print("Task: \(taskId ?? "Unavailable")")
print("Audio: \(response.audioFilePath)")
DispatchQueue.main.async {
playAudio(atPath: response.audioFilePath)
}
}
}AIBudsTTSConfig *config = [AIBudsTTSConfig defaultConfig];
config.speakerId = nil;
dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0), ^{
[AIBudsAISDK
synthesizeText:@"Hello, how can I help you?"
config:config
completion:^(
NSString *taskId, BOOL success, AIBudsTTSResultModel *response, NSError *error) {
if (!success || response == nil) {
NSLog(@"%@", error.localizedDescription ?: @"Synthesis failed");
return;
}
NSLog(@"Task: %@", taskId ?: @"Unavailable");
NSLog(@"Audio: %@", response.audioFilePath);
dispatch_async(dispatch_get_main_queue(), ^{
[self playAudioAtPath:response.audioFilePath];
});
}];
});Примечания
- Этот API создаёт файл, но не запускает воспроизведение на устройстве и не предоставляет
stopSpeaking()илиisSpeaking(). - Оценивайте
success,responseиerrorсовместно. Успешная операция требуетsuccess == trueи значения response, отличного отnil. - Идентификаторы голосов зависят от поставщика. Задавайте только идентификатор, документированный выбранным поставщиком.
- Обновляйте интерфейс и аудиоплеер в главном потоке.