实时速率和音调调整 Swift
Real time rate and pitch adjustments Swift
我正在使用 AVSpeechSynthesizer
设置一个 tts 应用程序。我必须进行实时音调和速率调整。我正在使用 UISLider
来调整音调和速率。
这是我的代码:-
@IBAction func sl(_ sender: UISlider) {
if synthesizer.isSpeaking {
synthesizer.stopSpeaking(at: .immediate)
self.rate = sender.value
if currentRange.length > 0 {
let valuee = currentRange.length + currentRange.location
let neww = self.tvEditor.text.dropFirst(valuee)
self.tvEditor.text = String(neww)
synthesizer.speak(buildUtterance(for: rate, pitch: pitch, with: String(neww), language: self.preferredVoiceLanguageCode2 ?? "en"))
}
} else {
}
}
即使没有提供详细信息,我也可能理解您的问题:您无法考虑 rate
和 [=11= 的新值 ] 当语音是运行.
为了解释以下细节,我阅读了 this example,其中包含代码片段 (ObjC, Swift) 和插图。
- 使用
rate
和 pitchMultiplier
属性创建您的 AVSpeechUtterance
实例。
- 将它们中的每一个添加到一个数组中,该数组将代表要发言的队列。
- 使用合成器在前一个队列中循环以读出每个元素。
现在,如果您想更改 real-time 中的 属性 值,请在其中一个滑块移动后查看以下步骤:
- 借助
AVSpeechSynthesizerDelegate
协议获取当前的语音。
- 运行
stopSpeaking
合成器方法将从队列中删除尚未说出的话语。
- 使用新的 属性 值创建之前删除的话语。
- 重做步骤 2/ 和 3/ 以使用这些更新值从停止的地方继续。
在您请求不影响存储的话语的新值之前,合成器将所有要说出的信息排入队列:您必须删除并使用新的 属性 值重新创建话语 待发言。
如果上面link提供的代码示例还不够,建议看一下this WWDC video detailed summary dealing with AVSpeechSynthesizer
.
我正在使用 AVSpeechSynthesizer
设置一个 tts 应用程序。我必须进行实时音调和速率调整。我正在使用 UISLider
来调整音调和速率。
这是我的代码:-
@IBAction func sl(_ sender: UISlider) {
if synthesizer.isSpeaking {
synthesizer.stopSpeaking(at: .immediate)
self.rate = sender.value
if currentRange.length > 0 {
let valuee = currentRange.length + currentRange.location
let neww = self.tvEditor.text.dropFirst(valuee)
self.tvEditor.text = String(neww)
synthesizer.speak(buildUtterance(for: rate, pitch: pitch, with: String(neww), language: self.preferredVoiceLanguageCode2 ?? "en"))
}
} else {
}
}
即使没有提供详细信息,我也可能理解您的问题:您无法考虑 rate
和 [=11= 的新值 ] 当语音是运行.
为了解释以下细节,我阅读了 this example,其中包含代码片段 (ObjC, Swift) 和插图。
- 使用
rate
和pitchMultiplier
属性创建您的AVSpeechUtterance
实例。 - 将它们中的每一个添加到一个数组中,该数组将代表要发言的队列。
- 使用合成器在前一个队列中循环以读出每个元素。
现在,如果您想更改 real-time 中的 属性 值,请在其中一个滑块移动后查看以下步骤:
- 借助
AVSpeechSynthesizerDelegate
协议获取当前的语音。 - 运行
stopSpeaking
合成器方法将从队列中删除尚未说出的话语。 - 使用新的 属性 值创建之前删除的话语。
- 重做步骤 2/ 和 3/ 以使用这些更新值从停止的地方继续。
在您请求不影响存储的话语的新值之前,合成器将所有要说出的信息排入队列:您必须删除并使用新的 属性 值重新创建话语 待发言。
如果上面link提供的代码示例还不够,建议看一下this WWDC video detailed summary dealing with AVSpeechSynthesizer
.