使用iOS-10.12.2,Swift-3.0.2,Xcode-8.2.1,
我试图让两个声音同时使用AVSpeechSynthesizer说话。
事实上,有两个文本作为基础,两个声音应同时用两种不同的声音(同一种语言)合成这两种文本。
对一个声音这样做很简单(参见下面的代码)。
但是如何为这两种声音设置两个音频通道?
我的愿望是否可以使用AVSpeechSynthesizer?
这是一个代码,用于为一次文本和一个语音进行文本到语音转换:
// ...
@IBOutlet weak var textView: UITextView!
let synth = AVSpeechSynthesizer()
var myUtterance = AVSpeechUtterance(string: "")
// var channelNames = [AVAudioSessionChannelDescription]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func textToSpeachButtonPressed(_ sender: Any) {
self.myUtterance = AVSpeechUtterance(string: textView.text)
self.myUtterance.rate = 0.4
self.myUtterance.volume = 1.0
self.speakWithVoiceOfPerson(person: "Anna")
}
func speakWithVoiceOfPerson(person: String) {
for voice in AVSpeechSynthesisVoice.speechVoices() {
print(voice.name)
if #available(iOS 9.0, *) {
if voice.name == person {
self.myUtterance.voice = voice
}
}
}
synth.speak(self.myUtterance)
}
答案 0 :(得分:1)
我正在尝试使用AVSpeechSynthesizer同时让两个声音讲话。
在iOS 12中绝对不可能,一次只能语音处理一次语音合成。
但是,您可以将an audio session与语音合成一起播放。