两个音频通道,用于AVSpeechSynthesizer的两个音色

时间:2017-01-14 20:27:57

标签: swift avaudiosession avspeechsynthesizer

使用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)
}

1 个答案:

答案 0 :(得分:1)

  

我正在尝试使用AVSpeechSynthesizer同时让两个声音讲话。

在iOS 12中绝对不可能,一次只能语音处理一次语音合成

但是,您可以将an audio session与语音合成一起播放。