And*_*rew 6 iphone objective-c ios avspeechsynthesizer
AVSpeechSynthesizer有一个相当简单的API,它不支持保存到内置的音频文件.
我想知道是否有办法解决这个问题 - 可能会录制输出,因为它是静音播放,以后播放?或者更高效的东西.
Jan*_*kel 13
这终于有可能了,在 iOS 13 中AVSpeechSynthesizer现在有了 write(_:toBufferCallback:):
let synthesizer = AVSpeechSynthesizer()
let utterance = AVSpeechUtterance(string: "test 123")
utterance.voice = AVSpeechSynthesisVoice(language: "en")
var output: AVAudioFile?
synthesizer.write(utterance) { (buffer: AVAudioBuffer) in
guard let pcmBuffer = buffer as? AVAudioPCMBuffer else {
fatalError("unknown buffer type: \(buffer)")
}
if pcmBuffer.frameLength == 0 {
// done
} else {
// append buffer to file
if output == nil {
output = AVAudioFile(
forWriting: URL(fileURLWithPath: "test.caf"),
settings: pcmBuffer.format.settings,
commonFormat: .pcmFormatInt16,
interleaved: false)
}
output?.write(from: pcmBuffer)
}
}
Run Code Online (Sandbox Code Playgroud)
目前AVSpeechSynthesizer 还不支持这个。无法使用 获取音频文件AVSpeechSynthesizer。几周前,我对我的一个应用程序进行了尝试,发现这是不可能的,而且 AVSpeechSynthesizeriOS 8 中也没有任何变化。
我也想过在播放时录制声音,但这种方法有很多缺陷,比如用户可能使用耳机,系统声音可能很低或静音,它可能会捕捉到其他外部声音,所以不建议采取这种方法。
| 归档时间: |
|
| 查看次数: |
1772 次 |
| 最近记录: |