Я заметил проблему, когда IOS, кажется, не локализует чтение (AVSpeechSynthesizer) emojis на IOS 10.0 или выше, но действительно , кажется, делает это правильно на IOS 9.3 или ниже.
Если вы скажете AVSpeechSynthesizer, который настроен на английский, чтобы говорить на смайликах, отправив ему строку «?», он скажет «Ухмыляющееся лицо с нормальными глазами».
Когда вы изменитеГолосовой язык синтезатора на любом другом языке, кроме английского, например, на французском, и отправка того же смайлика, он должен сказать: «Visage souriant avec des yeux normaux», который работает на IOS 9.3 или ниже, но на IOS 10.0 ивыше, он просто читает текст на английском языке («Ухмыляющееся лицо с нормальными глазами») с французским акцентом.
Я вызвал «игровую площадку» внизу, которая показывает, как я пришел к такому выводу... хотя я надеюсь, что я что-то упускаю или делаю что-то не так.
Чтобы воспроизвести эту проблему, создайте новый проект в XCode и прикрепите кнопку к функции speakNext ()n.
Запустите на симуляторе под управлением IOS 9.3 или ниже, затем сделайте то же самое на IOS 10.0 или выше.
Сможете ли вы объяснить зат?
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)
}
}