2016-06-29 7 views
0

Ich verwende Nuance Speechkit 2 mit swift, iOS 9.3. Ineed zu erkennen, wenn das TTS abgeschlossen ist, nach dieser Dokumentation:So erkennen Sie das Ende der Sprache mit Nuance Vocalizer, Speechkit 2, für iOS

https://developer.nuance.com/public/Help/DragonMobileSDKReference_iOS/Speech-synthesis.html

... Dies sind die drei Delegatmethoden für TTS zur Verfügung:

// SKTransactionDelegate 
func transaction(transaction: SKTransaction!, didReceiveAudio audio: SKAudio!) { ... } 
func transaction(transaction: SKTransaction!, didFinishWithSuggestion suggestion: String!) { ... } 
func transaction(transaction: SKTransaction!, didFailWithError error: NSError!, suggestion: String!) { ... } 

Auch hier ist eine Probe Swift Projekt (https://developer.nuance.com/public/index.php?task=prodDev), wobei das TTS Beispiel eine zusätzliche, SKAudioPlayerDelegate, und im Code verwendet habe ich diesen Delegatmethode jedoch nie löst er:

func audioPlayer(player: SKAudioPlayer!, willBeginPlaying audio: SKAudio!) { 
     log("willBeginPlaying") 
     // The TTS Audio will begin playing. 
    } 

Ich rufe TTS mit:

var skTransaction = skSession!.speakString("a long sentence here",withLanguage: "eng-USA",delegate: self) 

jedoch „didFinishWithSuggestion“ löst immer lange vor der TTS Stimme sprechen beendet ist, was für mich wie ein Fehler zu sein scheint. Der technische Support von Nuance antwortet nicht, kann mir jemand helfen? Vielen Dank.

Antwort

0

Ich fand die Lösung. Es stellt sich heraus, dass ein zweiter Delegierter zur Erfassung des Anfangs verantwortlich ist, und das Ende, die TTS-Wiedergabe:

class ViewController: UIViewController, SKAudioPlayerDelegate{ 
    //All your view controller code here... 

    func viewDidLoad(){ 
     //more init. code 
     skSession!.audioPlayer.delegate=self 
    } 
} 

Dies sind die Delegatmethoden:

func audioPlayer(player: SKAudioPlayer!, willBeginPlaying audio: SKAudio!){ 
    print("Starting TTS") 
} 
func audioPlayer(player: SKAudioPlayer!, didFinishPlaying audio: SKAudio!) { 
    print("TTS FINISHED") 
} 
Verwandte Themen