【发布时间】:2019-09-21 12:26:02
【问题描述】:
我注意到一个问题,即 IOS 似乎无法在 IOS 10.0 或更高版本上本地化表情符号的读取(通过 AVSpeechSynthesizer),但它确实似乎在 IOS 9.3 或更低版本上正确执行.
如果您告诉设置为英语的 AVSpeechSynthesizer 通过向其发送字符串“???
当您将合成器的语音语言更改为英语以外的任何语言(例如法语)并发送相同的表情符号时,它应该说“Visage souriant avec des yeux normaux”,这在 IOS 9.3 或更低,但在 IOS 10.0 及更高版本上,它只是读取带有法国口音的英文文本(“正常眼睛的笑脸”)。
我在下面想出了一个“操场”,显示我是如何得出这个结论的……尽管我希望我遗漏了什么或做错了什么。
要重现此问题,请在 XCode 中创建新项目并将按钮附加到 speakNext() 函数。
在运行 IOS 9.3 或更低版本的模拟器上运行,然后在 IOS 10.0 或更高版本上执行相同操作。
你能解释一下zat吗?
import UIKit
import AVKit
class ViewController: UIViewController {
var counter = 0
let langArray = ["en","fr","de","ru","zh-Hans"]
let synth = AVSpeechSynthesizer()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func speakNext(_ sender: Any) {
print("testing \(langArray[counter])")
let utterance = AVSpeechUtterance(string: "????")
utterance.voice = AVSpeechSynthesisVoice(language: langArray[counter])
counter += 1
if (counter > 4) { counter = 0 }
synth.speak(utterance)
}
}
【问题讨论】:
-
如果您的应用只支持英语,那么用户选择哪种语言并不重要。它将是英文的。这在较新版本的 iOS 中发生了变化。如果您支持英语和法语,那么文本转语音应该适用于英语和法语,而不是用户可能选择的任何语言。
-
感谢您的意见。也许这有什么问题,但我没有说用户选择语言的任何内容。这与通过代码设置话语的语音/语言有关,设置正确的语音没有问题。我通过添加法语本地化(单击项目设置中本地化下的“+”)测试了您在 IOS 10.2 上所说的内容,然后将声音设置为法语,并发送随机表情符号......它仍然可以正确读取它们语音,但读英文单词(与原始问题描述相同)。
标签: swift localization text-to-speech emoji avspeechsynthesizer