Eşzamanlı Çeviri
Uzun süren konuşma çevirisi oturumu başlatın; parça parça kaynak metni, çevrilen metni, isteğe bağlı TTS sesini, olayları ve nihai raporu alın.
SimultaneousInterpretationEventType yaşam döngüsünün onEvent tarafından nasıl kullanıldığı için AI Oturum Olayları sayfasına bakın.
Interpretation session lifecycle
Coordinate provider startup, the active audio source, ordered incremental results, interruption handling, and final shutdown.
Ön Koşullar
AIBudsAISDKbaşlatılmış, kayıtlı bir sağlayıcı seçilmiş ve doğrulanmıştır.- Sağlayıcı
SimultaneousInterpretationServiceAPIdesteği sunar. - Kaynak ve hedef dil tanımlayıcıları tireli biçimdedir ve birbirinden farklıdır.
- AIBuds AI SDK dahili kaydı kapalıysa ana uygulama harici PCM sağlar. Ses bağlı aygıttan geliyorsa aygıt
DeviceAudioRecordingAPIprotokolüne uyar.
AI desteğiyle uygulayın
Bu iş akışını AI ile uygulayın
Resmî “AIBuds Simultane Çeviriyi Uygulama” becerisini kullanarak iş akışını uygulamanıza uyarlayın.
https://docs-aibuds.github.io/tr/skills/implement-aibuds-simultaneous-interpretation adresini okuyup yönergeleri izleyin. Bu beceriyle “AIBuds Simultane Çeviriyi Uygulama” iş akışını iOS projesinde uygulayıp doğrulayın.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 a simultaneous interpretation session.
/// - Parameters:
/// - config: The session configuration.
/// - onStartSuccess: Called with the started session.
/// - onStartFailure: Called when the session cannot start.
/// - onStopByInterruption: Called when an interruption stops the session.
/// - onException: Called for a recoverable session exception. The app decides
/// whether the session should stop.
/// - streamResultHandler: Called with incremental interpretation results.
/// - onEvent: Called for session-level events.
/// - onFinish: Called with the optional final report.
public static func startSimultaneousInterpretation(_ config: SimultaneousInterpretationConfig = .default,
onStartSuccess: ((_ session: SimultaneousInterpretationSessionConvertible) -> Void)? = nil,
onStartFailure: ((_ error: NSError) -> Void)? = nil,
onStopByInterruption: ((_ error: NSError?) -> Void)? = nil,
onException: ((_ error: NSError) -> Void)? = nil,
streamResultHandler: ((
_ isFinal: Bool,
_ response: SimultaneousInterpretationDataModel?,
_ error: Error?
) -> Void)? = nil,
onEvent: ((_ event: SimultaneousInterpretationEventModel) -> Void)? = nil,
onFinish: ((_ report: SimultaneousInterpretationReportModel?) -> Void)? = nil)
/// Stops the current simultaneous interpretation session.
public static func stopSimultaneousInterpretation()/// Starts a simultaneous interpretation session.
/// - Parameters:
/// - config: The session configuration.
/// - onStartSuccess: Called with the started session.
/// - onStartFailure: Called when the session cannot start.
/// - onStopByInterruption: Called when an interruption stops the session.
/// - onException: Called for a recoverable session exception.
/// - streamResultHandler: Called with incremental interpretation results.
/// - onEvent: Called for session-level events.
/// - onFinish: Called with the optional final report.
+ (void)startSimultaneousInterpretationWithConfig:(AIBudsSimultaneousInterpretationConfig * _Nonnull)config
onStartSuccess:(void (^ _Nullable)(id <AIBudsSimultaneousInterpretationSessionConvertible> _Nonnull))onStartSuccess
onStartFailure:(void (^ _Nullable)(NSError * _Nonnull))onStartFailure
onStopByInterruption:(void (^ _Nullable)(NSError * _Nullable))onStopByInterruption
onException:(void (^ _Nullable)(NSError * _Nonnull))onException
streamResultHandler:(void (^ _Nullable)(BOOL, AIBudsSimultaneousInterpretationDataModel * _Nullable, NSError * _Nullable))streamResultHandler
onEvent:(void (^ _Nullable)(AIBudsSimultaneousInterpretationEventModel * _Nonnull))onEvent
onFinish:(void (^ _Nullable)(AIBudsSimultaneousInterpretationReportModel * _Nullable))onFinish;
/// Stops the current simultaneous interpretation session.
+ (void)stopSimultaneousInterpretation;startSimultaneousInterpretation ve stopSimultaneousInterpretation başvurularına bakın.
Yapılandırma
SimultaneousInterpretationConfig şu ayarları sunar:
| Özellik | Varsayılan | Açıklama |
|---|---|---|
sourceLanguage | Uygulama dili | İsteğe bağlı kaynak dil; boş dize otomatik algılamayı etkinleştirir. |
targetLanguage | en-US | Gerekli hedef dil. |
enableTTS | true | Çevrilen konuşmanın seslendirilip seslendirilmeyeceği. |
enableVoicePlayback | true | Oluşturulan sesin oynatılıp oynatılmayacağı. |
usesInternalAudioRecording | true | Oturum sesinin AIBuds AI SDK tarafından kaydedilip kaydedilmeyeceği. |
preferSpeakerOutput | false | Hoparlör çıkışının tercih edilip edilmeyeceği. |
usesInternalAudioRecording false olduğunda AIBuds AI SDK oturum sesini kaydetmez. Ana uygulama döndürülen oturumu saklamalı ve appendInt16PCM(_:isFinal:) veya appendAudioPCMBuffer(_:isFinal:) üzerinden harici PCM sağlamalıdır.
Kullanım Örnekleri
- Swift
- Objective-C
let config = SimultaneousInterpretationConfig.default
config.sourceLanguage = "zh-CN"
config.targetLanguage = "en-US"
config.usesInternalAudioRecording = true
config.preferSpeakerOutput = false
AIBudsAISDK.startSimultaneousInterpretation(
config,
onStartSuccess: { session in
currentSession = session
},
onStartFailure: { error in
print("Unable to start: \(error.localizedDescription)")
},
onStopByInterruption: { error in
print(error?.localizedDescription ?? "Session interrupted")
currentSession = nil
},
onException: { error in
print("Session exception: \(error.localizedDescription)")
},
streamResultHandler: { isFinal, response, error in
if let error {
print(error.localizedDescription)
return
}
guard let response else { return }
if response.isSourceTextDefinite {
print("Source: \(response.sourceText ?? "")")
}
if response.isTargetTextDefinite {
print("Target: \(response.targetText ?? "")")
}
if isFinal { print("Final result") }
},
onEvent: { event in
print(event)
},
onFinish: { report in
currentSession = nil
print(report ?? "No report")
}
)AIBudsSimultaneousInterpretationConfig *config =
[AIBudsSimultaneousInterpretationConfig defaultConfig];
config.sourceLanguage = @"zh-CN";
config.targetLanguage = @"en-US";
config.usesInternalAudioRecording = YES;
config.preferSpeakerOutput = NO;
[AIBudsAISDK startSimultaneousInterpretationWithConfig:config
onStartSuccess:^(id<AIBudsSimultaneousInterpretationSessionConvertible> session) {
self.currentSession = session;
}
onStartFailure:^(NSError *error) {
NSLog(@"Unable to start: %@", error.localizedDescription);
}
onStopByInterruption:^(NSError *error) {
NSLog(@"%@", error.localizedDescription ?: @"Session interrupted");
self.currentSession = nil;
}
onException:^(NSError *error) {
NSLog(@"Session exception: %@", error.localizedDescription);
}
streamResultHandler:^(
BOOL isFinal, AIBudsSimultaneousInterpretationDataModel *response, NSError *error) {
if (error != nil) {
NSLog(@"%@", error.localizedDescription);
return;
}
if (response.isSourceTextDefinite) {
NSLog(@"Source: %@", response.sourceText ?: @"");
}
if (response.isTargetTextDefinite) {
NSLog(@"Target: %@", response.targetText ?: @"");
}
}
onEvent:^(AIBudsSimultaneousInterpretationEventModel *event) {
NSLog(@"%@", event);
}
onFinish:^(AIBudsSimultaneousInterpretationReportModel *report) {
self.currentSession = nil;
NSLog(@"%@", report);
}];session.isRecordingInternally false olduğunda harici ses yolunu ana uygulama yönetir. Demo, onStartSuccess sonrasında aygıt tarafındaki AI kaydını başlatır, kodu çözülen her PCM grubunu session.appendInt16PCM(_:isFinal:) öğesine iletir, önce aygıt kaydını durdurur ve ardından AIBudsAISDK.stopSimultaneousInterpretation() çağırır.
Notlar
- Etkin oturumu ve kayıt modunu izlemek için başlangıçta dönen
SimultaneousInterpretationSessionConvertibleöğesini saklayın. onExceptionoturumu mutlaka durdurmaz. Devam etmeye veyastopSimultaneousInterpretation()çağırmaya karar verin.- Her geri çağrıyı doğrudan eklemek yerine kesin parçaları
sourceTextSequencevetargetTextSequenceile sıralayın. - TTS sesi
SimultaneousInterpretationDataModelüzerinde göreli dosya, tam dosya yolu veya Base64 PCM verisi olarak sunulabilir.