ios - 在 Swift 中强制自定义 AVSpeech 和 AVSpeechUtterance 中的单词发音
问题描述
对于使用 AVSpeechUtterance 说出数字,我希望 Siri 以尊重数字类型约定的方式说出数字。
对于日期,我希望将 1492 发音为 1492,而不是 1000、400、92。
对于电话号码 650-412-3456,我想说六五哦,四一二三四五六,而不是六百五十破四百十二破三,一千四百五十六。
有没有使用 AVSpeech 和 AVUtterance 指定发音?文档中似乎没有任何明显的内容。
解决方案
有没有使用 AVSpeech 和 AVUtterance 指定发音?文档中似乎没有任何明显的内容。
达到目的的最好方法是为要读出的文本提供适当的格式。
下面的代码片段通过几个例子突出了这个断言:
class ViewController: UIViewController {
let synthesizer = AVSpeechSynthesizer()
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy HH:mm"
let date = dateFormatter.date(from: "01/04/2015 05:30")
let dateStr = DateFormatter.localizedString(from: date!,
dateStyle: .medium,
timeStyle: .short)
let dateUtterance = AVSpeechUtterance(string: dateStr)
dateUtterance.voice = AVSpeechSynthesisVoice(language: "en-GB")
let hourComponents = Calendar.current.dateComponents([.hour, .minute],
from: date!)
let hourStr = DateComponentsFormatter.localizedString(from: hourComponents,
unitsStyle: .spellOut)
let hourUtterance = AVSpeechUtterance(string: hourStr!)
hourUtterance.voice = AVSpeechSynthesisVoice(language: "en-GB")
let numberValue = NSNumber(value: 54038921.7)
let nbStr = NumberFormatter.localizedString(from: numberValue,
number: .decimal)
let nbUtterance = AVSpeechUtterance(string: nbStr)
nbUtterance.voice = AVSpeechSynthesisVoice(language: "en-GB")
synthesizer.speak(hourUtterance) //Only time
synthesizer.speak(dateUtterance) //The complete date and hour
synthesizer.speak(nbUtterance) //Just for numbers
}
}
如果此示例还不够,可以使用代码片段 (Objc 和 Swift)的更多信息。
推荐阅读
- php - axios.delete 的“尝试获取非对象的属性‘参数’”。后端:PHP 前端:React
- angular - 角度数据未定义
- scala - 如何处理在scala中解析json的异常
- vue.js - Vuejs,当我在商店模块中访问它时,为什么 this.$store.state.route.params.activityId 未定义
- html - 输入元素在聚焦时覆盖按钮
- python - 如何从 [c_api.h] 向 TF_SessionRun 提供训练数据
- java - 为什么 IntelliJ 将注释标头放在错误的位置……仅用于测试?
- javascript - 如何在 Highcharter 中使用 JavaScript?
- javascript - 为什么使用 React Hooks、MomentJS 对象和间隔/超时更新状态不会触发重新渲染?
- mustache - 如何修复以'm_-'开头的随机字符串,在用小胡子渲染模板后附加到类