gpt4 book ai didi

后台 iOS 文字转语音

转载 作者:可可西里 更新时间:2023-11-01 04:43:32 30 4
gpt4 key购买 nike

我在后台播放文本转语音时出现间歇性(哎呀!)问题,由 Apple Watch 触发。我已经正确设置了后台模式、AVSession 类别和 WatchKitExtensionRequest 处理程序。 (见下文。)我以前有这个工作,无法弄清楚发生了什么变化。 (会不会是 iOS 9 有问题?“之前”指的是 iOS 8。)

问题是这样的:当应用程序从 Watch 收到请求并且应用程序处于后台或手机处于 sleep 状态(锁定)时,语音有时会立即播放,并且< em>其他时间 在应用程序被带到前台之前不会播放。操作系统似乎有时会排队音频,有时不会。我找不到成功案例和失败案例之间的任何共同线索。我可以通过记录来验证对 speakUtterance() 的调用 所有 情况下进行的。但它的行为各不相同,显然是随机的。唯一的线索是,可能应用程序在后台运行的时间越长,它立即说话的可能性就越小。

这让我拔头发。欢迎提出建议。

在 info.plist 中:

所需的后台模式:应用程序使用 AirPlay 播放音频或流式传输音频/视频

在 AppDelegate.application:didFinishLaunching:withOptions():

do {
try AVAudioSession.sharedInstance().setCategory(
AVAudioSessionCategoryPlayback,
withOptions:.DuckOthers
)
try AVAudioSession.sharedInstance().setActive(true)
} catch let error as NSError {
// etc...
}

在 AppDelegate.application:handleWatchKitExtensionRequest...() 中:

var bgTaskId:UIBackgroundTaskIdentifier = 0
bgTaskId = application.beginBackgroundTaskWithName(
"Prose WKE handler",
expirationHandler: {
application.endBackgroundTask(bgTaskId)
}
)
//... Post notification to call Text-to-Speech
application.endBackgroundTask(bgTaskId)

最佳答案

这里有一个解决方法:在调用 speakUtterance() 之后立即使用 AVAudioPlayer 播放第二段声音(我使用了半秒的静音),这似乎是在“缓动管道”。

关于后台 iOS 文字转语音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33978388/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com