AVSpeechSynthesizer 使用 Apple Watch 的扬声器而不是耳机作为输出通道
AVSpeechSynthesizer uses Apple Watch's speaker and not headset as output channel
我在 WatchKit 应用程序扩展中使用 AVSpeechSynthesizer
。
逻辑很简单,可以概括为:
let utterance = AVSpeechUtterance(string: "Hello, World")
synth.speak(utterance)
这很好用,但语音总是通过 Apple Watch 的板载扬声器转播。
我需要通过连接到 iPhone.
的 airpods 进行演讲
之前我通过 WatchConnectivity
将任务委派给 iPhone,效果很好,但由于 WatchConnectivity
通信延迟,我将控制逻辑直接移到了 Apple Watch 上。
我以为 watchOS
会在内部将音频移交给 BLE 设备,但它并没有按计划进行。
也许我遗漏了什么?
我需要指定音频通道吗synth.outputChannels
?
我是否需要显示要求用户 select 音频输出源的 AirPlay 弹出窗口?
如果是这样,我该怎么做?
我无法在网上找到很多关于此事的信息,因此非常感谢您的帮助。
我只是想找到一种通过 AirPods 接收语音的方法。
您可以使用以下代码显示音频设备选择器并将音频定向到所选设备:
let session = AVAudioSession.sharedInstance()
do {
try session.setCategory(AVAudioSession.Category.playback,
mode: .default,
policy: .longFormAudio,
options: [])
session.activate(options: []) { (success, error) in
// Check for an error and play audio.
if let err = error) {
print(err)
}
}
} catch {
print(error)
}
我在 WatchKit 应用程序扩展中使用 AVSpeechSynthesizer
。
逻辑很简单,可以概括为:
let utterance = AVSpeechUtterance(string: "Hello, World")
synth.speak(utterance)
这很好用,但语音总是通过 Apple Watch 的板载扬声器转播。
我需要通过连接到 iPhone.
之前我通过 WatchConnectivity
将任务委派给 iPhone,效果很好,但由于 WatchConnectivity
通信延迟,我将控制逻辑直接移到了 Apple Watch 上。
我以为 watchOS
会在内部将音频移交给 BLE 设备,但它并没有按计划进行。
也许我遗漏了什么?
我需要指定音频通道吗synth.outputChannels
?
我是否需要显示要求用户 select 音频输出源的 AirPlay 弹出窗口?
如果是这样,我该怎么做?
我无法在网上找到很多关于此事的信息,因此非常感谢您的帮助。
我只是想找到一种通过 AirPods 接收语音的方法。
您可以使用以下代码显示音频设备选择器并将音频定向到所选设备:
let session = AVAudioSession.sharedInstance()
do {
try session.setCategory(AVAudioSession.Category.playback,
mode: .default,
policy: .longFormAudio,
options: [])
session.activate(options: []) { (success, error) in
// Check for an error and play audio.
if let err = error) {
print(err)
}
}
} catch {
print(error)
}