Локализация чтения Emoji на IOS 10.0 или выше - PullRequest
4 голосов
/ 03 мая 2019

Я заметил проблему, когда 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)
    }

}

1 Ответ

3 голосов
/ 07 июля 2019

Похоже, что лучше или хуже, смайлики теперь читаются в соответствии с предпочтительным языком пользователя.Если вы запустите его на устройстве и переключитесь, например, на французский, то смайлики будут считываться по-французски, даже если речь идет о синтезе голоса на английском.Стоит отметить, что некоторые языки, похоже, не читают эмодзи.Удивительно, но это похоже на японцев.

Так вы можете изменить это?

Ну, вроде как, но я не уверен, что это одобрено Apple.Вы можете установить ключ «AppleLanguages» в UserDefaults.standard.Первый язык в этом массиве , когда UIApplicationMain называется , будет использоваться для чтения смайликов.Это означает, что если вы измените значение в своем приложении, оно не вступит в силу до следующего запуска приложения.

Не совсем понятно, является ли это ошибкой или предполагаемым поведением, это, конечно, неприятно слышать.Возможно, стоит подать «Радар» или «Обратная связь» или как там их сейчас называют с Apple.

...