我注意到一个问题,在IOS 10.1或更高版本上,IOS似乎无法本地化(通过语音转换)表情符号的读取,但确实在iOS 9.0。
如果您通过将字符串“”发送给设置为英语的AVSpeechSynthesizer来说出表情符号,则会显示“眼睛正常的笑脸”。
当您将合成器的语音语言更改为英语以外的其他语言(例如法语)并发送相同的表情符号时,它应显示“ Visage souriant avec des yeux normaux”, 是在IOS 9.0上完成的。 ,但是在IOS 10.1和更高版本上,它只是读取带有法语口音的英语文本(“普通眼睛咧着嘴笑脸”)。 >
我只能认为,由于投资回报率低,苹果决定放弃这个庞大的“表情符号本地化项目”。
我想出了一个下面的“操场”,展示了我是如何得出这个结论的……虽然我希望我错过了某些事情或做错了什么。
要重现此问题,请在XCode中创建一个新项目,并将一个按钮附加到speakNext()函数。
在运行IOS 9.0的模拟器上运行,然后在IOS 10.1或更高版本上执行相同的操作。
您能解释一下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)
}
}
答案 0 :(得分:3)
现在看来,无论是好是坏,表情符号都已根据用户的首选语言读取了。如果您在设备上运行它并切换到例如法语,则即使语音合成语音是英语,表情符号也会以法语读出。值得注意的是,某些语言似乎并未读出表情符号。令人惊讶的是,这对于日语似乎是正确的。
那么您可以更改它吗?
好吧,但我不确定它是否经过Apple认可。您可以在UserDefaults.standard
中设置“ AppleLanguages”键。数组中的第一种语言在调用UIApplicationMain时将是用于读取表情符号的语言。这意味着,如果您更改应用程序中的值,则该值只有在下次启动应用程序时才会生效。
目前尚不清楚这是错误还是预期的行为,一定会听到。可能值得向Apple提交Radar或Feedback或他们现在所说的任何东西。
答案 1 :(得分:1)
更新:问题似乎已在iOS 13.2中修复!是的!
更新:在iOS 13正式发布之后,该问题已被更严重的问题(iOS 13 Text To Speech (TTS - AVSpeechSynthesisVoice) crashes for some users after update)所取代/取代。
//原始帖子:
通过“反馈助手”通知苹果后,看来这是IOS 10中引入的一个错误,但连续三个版本的IOS都未注意到该错误。
在使用IOS 13 beta 5(17A5547d)测试之后,该问题没有出现。
他们声称从现在开始,该问题已得到明确解决。