2017-02-03 4 views
2

У меня есть блок кода, который не работает, но не дает мне ошибки времени выполнения. Из спикера просто нет речи.Быстрый текст в речь

let synth = AVSpeechSynthesizer() 
var myUtterance = AVSpeechUtterance(string: audioTextField.text) 
myUtterance.rate = 0.3 
synth.speak(myUtterance) 

Есть ли какой-либо код, который я пропускаю, или это что-то еще? Помощь будет высоко оценена.

Edit: Это не работает в любых @IBActions, но работает нормально в окне сделал функцию загрузки ....

override func viewDidLoad() { 
    super.viewDidLoad() 
    speechRecognizer?.delegate = self 
    timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(tick), userInfo: nil, repeats: true) 
    tick() 
    requestSpeechAuth() 
//WORKS HERE 
} 

@IBAction func audioButtonPressed(_ sender: Any) { 
//DOESN"T WORK HERE  
    if isRecording { 
     stopRecording() 
    } else { 
     startRecording() 
    } 
} 

ответ

7

Этот код работает (от Apple, документы)

let string = "Hello, World!" 
let utterance = AVSpeechUtterance(string: string) 
utterance.voice = AVSpeechSynthesisVoice(language: "en-US") 

let synth = AVSpeechSynthesizer() 
synth.speak(utterance) 

Не забывайте импортировать AVFoundation

import AVFoundation 
+0

Поддерживает ли он ssml? –

+0

Я имею ввиду ssml для речи (вместо текста в речь) –