2013-12-16 2 views
17

내 앱에서 AVSpeechSynthesizer를 사용하고 있으며 오디오 파일이나 AVAsset에 음성 텍스트를 저장하려고합니다. 나는 애플의 문서들을 살펴 보았지만 아무 것도 보지 못했다. 아래는 현재 코드입니다.오디오 파일에 AVSpeechSynthesizer 발화

AVSpeechUtterance * utterance = [AVSpeechUtterance speechUtteranceWithString:textView.text]; 
float rate = [speedSlider value]/1.5; 
utterance.rate = rate; 
[speechSynthesizer speakUtterance:utterance]; 
+0

이 API는 새로운 기능이므로 나중에 추가 될 수있는 특정 기능이 부족할 수 있습니다. 재생중인 오디오를 녹음하는 방법을 살펴보십시오. – erdekhayser

+0

그래, 이미 AVAudioRecoder를 설정했지만 깨끗한 솔루션이 있는지 알고 싶다 – Sean

+0

이 문제에 대한 적절한 해결책을 찾았습니까? 비슷한 것을 만들려고합니다. –

답변

4

그것은 당신의 응용 프로그램에 의해 생성 된 오디오를 녹음 할 수 있습니다 (되지 않은 다른 응용 프로그램에서). AVSpeech은 생성 된 오디오를 저장하는 API를 제공하지 않지만 Apple은 작업을 수행 할 수있는 다른 API를 가지고 있습니다. 해결책은 아마도 당신이 원하는만큼 깨끗하지는 않지만 작동해야합니다.

Apple은 고급 오디오 처리 및 녹음을 관리하기 위해 Audio Unit Framework이라는 프레임 워크를 제공합니다. 이것은 오디오를 동시에 재생하고 녹음 할 수있는 iOS SDK의 유일한 프레임 워크입니다. Audio Unit Hosting Guide이 유망 해 보이며 Audio Mixer Sample App도 마찬가지입니다.

참고 : AVSpeechSynthesizer에서 오디오 장치 프레임 워크를 사용하지 않았습니다. 작동하지 않을 수도 있습니다. 그러나 AVSpeechSynthesizer가 CoreAudio와 잘 어울리는 것을 고려하면 AudioUnits와 함께 작동 할 가능성이 높습니다.


위의 해결 방법으로 문제가 해결되지 않으면 간단한 해결 방법이 도움이 될 수 있습니다. AVSpeechSynthesizer은 제대로 작동하려면 네트워크 연결이 필요하지 않으므로 많은 경우 오디오를 저장하려면 이 필요하지 않을 수 있습니다. 대신 나중에 NSFileManager를 사용에 대한 텍스트를 저장할 수 :

NSString *textToSynthesize = @"Just what do you think you are doing, Dave?"; 

NSError *error; 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths firstObject]; 

[textToSynthesize writeToFile:[documentsDirectory stringByAppendingPathComponent:@"synthText.txt"] atomically:YES encoding:NSUTF8StringEncoding error:&error]; 

텍스트를 합성 할 준비가되면 바로 파일을 읽고 다시 AVSpeechSynthesizer에 연결합니다. 이 솔루션은 모든 경우에 적용되거나 적용되지 않습니다 (예 : 오디오 파일을 다른 사람에게 보내야하는 경우).


이러한 문제는 몇 가지 해결 방법 일 뿐이며 둘 다 해결 방법이며 특정 시나리오에 따라 작동하지 않을 수 있습니다. YMMV. 행운을 빕니다!

+0

Sam의 답변 중 첫 번째 부분은 훌륭합니다. Apple은 오디오 장치 및 오디오 처리 큐를 사용하여 오디오를 조작, 녹음 및 재생할 수있는 리소스를 제공하지만 사용하기가 매우 복잡하고 투자하려는 것보다 더 많은 시간이 소요될 수 있습니다. 그러나 이것이 유일한 옵션이라고 생각한다면 Apple의 Core Audio 프레임 워크에 대한 인터페이스를보다 쉽게 ​​사용할 수있는 The Amazing Audio Engine을 살펴 봐야합니다. [놀라운 오디오 엔진 웹 사이트] (http://theamazingaudioengine.com/) – themantalope