2017-02-23 2 views
0

В моем приложении я использую AVSpeechSynthesizer, текст речей - русский, проблема в том, что я меняю системный язык на английский, текст произносится с английским акцентом, звучит как транскрипция русского языка. Как я могу справиться с этой проблемой?Язык AVSpeechSynthesizer

здесь некоторый код

utterance.voice = AVSpeechSynthesisVoice(language: "ru-Ru") 
    synthesizer.pauseSpeaking(at: .word) 
    utterance = AVSpeechUtterance(string: "Какой-то текст который нужно произнести") 
    synthesizer.speak(utterance) 

ответ

0

Может быть, это будет полезно для кого-то, я нашел решение, но это выглядит как обходной путь, прежде чем говорить меняю AppLanguage, вот код

UserDefaults.standard.set(["ru"], forKey: "AppleLanguages") 
    UserDefaults.standard.synchronize() 
    utterance.voice = AVSpeechSynthesisVoice(identifier: "ru-RU") 

после синхронизация AVSpeechSynthesisVoice.currentLanguageCode() стала «ru» игнорированием системного языка

Вот полный код для турецкого

импорт UIKit

импорт AVFoundation

класс ViewController: UIViewController {

let synthesizer : AVSpeechSynthesizer = AVSpeechSynthesizer() 
var utterance : AVSpeechUtterance = AVSpeechUtterance(string: "") 

override func viewDidLoad() { 
    super.viewDidLoad() 
    UserDefaults.standard.set(["tr"], forKey: "AppleLanguages") 
    UserDefaults.standard.synchronize() 
} 

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    try? AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: .interruptSpokenAudioAndMixWithOthers) 
    utterance.voice = AVSpeechSynthesisVoice(identifier: "tr-TR") 
    synthesizer.pauseSpeaking(at: .word) 
    testSpeech() 
} 

private func testSpeech() { 
    utterance = AVSpeechUtterance(string: "Çeviri için deney metni") 
    speak() 
} 

private func speak() { 
    if synthesizer.isSpeaking { 
     synthesizer.pauseSpeaking(at: .immediate) 
     return 
    } 
    synthesizer.speak(utterance) 
} 

}

+0

он не работает для меня. Какие-либо предложения? –

+0

Вы уверены, что языковые ключи, которые вы используете, являются правильными? –

+0

Независимые языковые ключи работают с системным языком. –

Смежные вопросы