0
現在、私はデモアプリケーションで作業中で、3つの部分に分かれています 1.テキストへの音声入力(完了) 2.テキストをサーバーに送信し、応答を取得します戻る(API.aiを使用)(完了) 3.テキストを音声に変換し、応答メッセージを音声に変換して機能しない。AVSpeechsynthesizerが即時にAPIコール内で動作しない
私はそれに優先順位をつけることができる機能の中で働いていません。ここ
はコード
@IBAction func startActionTapped(_ sender: Any) {
if audioEngine.isRunning {
audioEngine.stop()
recognitionRequest?.endAudio()
startButton.isEnabled = false
startButton.setTitle("Start", for: .normal)
}
else {
startRecording()
startButton.setTitle("Stop", for: .normal)
let loadingNotification = MBProgressHUD.showAdded(to: self.view, animated: true)
loadingNotification.mode = MBProgressHUDMode.indeterminate
loadingNotification.label.text = "Voice Recogninsing...."
DispatchQueue.main.asyncAfter(deadline: .now() + 10.0, execute: {
loadingNotification.label.text = "sending request to server...."
let request = ApiAI.shared().textRequest()
request?.query = ["turn on blue led"]
request?.setMappedCompletionBlockSuccess({ (request, response) in
let response = response as! AIResponse
if response.result.action == "light.led" {
if let parameters = response.result.parameters as? [String: AIResponseParameter] {
if let led = parameters["led"]?.stringValue {
switch led {
case "red":
print("color is red")
case "blue":
print("color is blue")
case "green":
print("color is green")
default:
print("color is :",led)
}
self.speechToText = ""
}
}
} else {
print("Invalid LED Color")
}
if let textResponse = response.result.fulfillment.speech {
print(textResponse)
loadingNotification.hide(animated: true)
DispatchQueue.global(qos: .userInitiated).async {
let synth = AVSpeechSynthesizer()
let utterance = AVSpeechUtterance(string: textResponse)
utterance.rate = AVSpeechUtteranceDefaultSpeechRate
let lang = "en-US"
utterance.voice = AVSpeechSynthesisVoice(language: lang)
synth.speak(utterance)
}
}
}, failure: { (request, error) in
print(error!)
})
ApiAI.shared().enqueue(request)
})
}
speechToText = ""
}
は、音声作業になぜテキストは分からないです。 私の質問はスピーチがアプリケーションで動作していない、何かステップがありませんか?
let synth = AVSpeechSynthesizer()
let utterance = AVSpeechUtterance(string: textResponse)
utterance.rate = AVSpeechUtteranceDefaultSpeechRate
let lang = "en-US"
utterance.voice = AVSpeechSynthesisVoice(language: lang)
synth.speak(utterance)
メインキューでコードを実行してみますか? – chengsam
@chengsamが動作しない – Joe
単純なボタンクリックイベントを使用してTTSを実装しようとすると、動作しますか? – chengsam