在IOS 10.0或更高版本上本地化Emoji的阅读

Boo*_*unz 5 localization text-to-speech emoji avspeechsynthesizer swift

我注意到一个问题,IOS似乎没有本地化表情符号的阅读(通过AVSpeechSynthesizer)在IOS 10.0或更高,但它确实似乎正确地做到这一点的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)
    }

}
Run Code Online (Sandbox Code Playgroud)

Boo*_*unz 1

更新:问题似乎已在 iOS 13.2 中得到修复!耶!

更新:iOS 13 正式发布后,该问题已被更严重的问题所取代(iOS 13 文本转语音(TTS - AVSpeechSynthesisVoice)更新后某些用户崩溃)。

// 原帖:

通过反馈助手通知苹果后,这似乎是 iOS 10 中以某种方式引入的错误,连续三个版本的 IOS 都没有注意到该错误。

使用 iOS 13 beta 5 (17A5547d) 进行测试后,该问题并未出现。

他们声称从现在起这个问题已经得到明确解决。