2014-07-09 2 views
1

나는 내 응용 프로그램에서이 UI와 AVSpeechSynthesizer을 구현하고있다 :AVSpeechSynthesizer - 진행 방법

enter image description here

은 어떻게 AVSpeechSynthesizer의 발언에서 진행을받을 수 있나요? 현재 진행 상황을 가져올 대리자 메서드 또는 API가 없지만 진행 상황을 확인하는 해결 방법이 있습니까?

+0

"대리자 메서드가 없다는 것을 알았습니다."그렇다면 잘못 본 것입니다. 예제 코드는 https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch14p656textToSpeech/ch27p924textToSpeech/ViewController.m – matt

+0

에서 볼 수 있습니다. "현재 진행 상태를 가져올 대리자 메서드 나 API가 없습니다." – NSFeaster

답변

3

여기에는 두 가지 방법이 있습니다. 둘 다 AVSpeechSynthesizer 인스턴스에 대해 delegate으로 설정하는 것으로 시작합니다.

여러 발언을 생성하고 대기열에 추가하여 신디사이저에 텍스트를 제공하는 경우 발언하도록 말한 발언을 추적하고 위임받은 사람에게 speechSynthesizer:didFinishSpeechUtterance:을 구현하여 완료시 알림을받을 수 있습니다. 귀하의 말한 텍스트의 길이와 얼마나 많은 말을했는지에 따라 완성 된 말의 수를 말한 총 수와 비교하여 측정하면 말의 진행 정도가 뚜렷하게 나타납니다.

텍스트를 모두 한 발언으로 제공하거나 여러 발언을 사용하고 있고 더 세분화 된 진행률 측정을 원한다면 위임자에 speechSynthesizer:willSpeakRangeOfSpeechString:utterance:을 구현하십시오. 스피치 문자열의 길이에 대해 현재 말하는 범위를 비교함으로써 진행 상황을 관찰 할 수 있습니다.

+0

willSpeakRange 델리게이트 메소드를 사용하고 struct의 range.location 속성과 utterance.speechstring.length를 사용하여 백분율을 완성합니다. – NSFeaster