Możliwe jest nagrywanie dźwięku generowane przez aplikacji (nie z innych aplikacji). Chociaż AVSpeech
nie zapewnia interfejsu API do zapisywania wygenerowanego dźwięku, Apple ma inne interfejsy API, które mogą wykonać to zadanie. Rozwiązanie prawdopodobnie nie jest tak czyste, jak byś chciał, ale powinno działać.
Firma Apple udostępnia strukturę o nazwie Audio Unit Framework do zarządzania zaawansowanym przetwarzaniem i nagrywaniem dźwięku. Jest to jedyne środowisko w SDK iOS (według mojej wiedzy), które może jednocześnie odtwarzać i nagrywać dźwięk. Model Audio Unit Hosting Guide wygląda obiecująco, podobnie jak wersja Audio Mixer Sample App.
Uwaga: Nie próbowałem używać Audio Unit Framework z AVSpeechSynthesizer (może, ale nie musi działać). Jednakże, biorąc pod uwagę, że AVSpeechSynthesizer gra dobrze z CoreAudio, to najprawdopodobniej będzie działało z AudioUnits.
Jeśli powyższe rozwiązanie nie działa, proste rozwiązanie może pomóc. AVSpeechSynthesizer
nie wymaga żadnego połączenia sieciowego w celu prawidłowego działania, więc w wielu przypadkach nie trzeba potrzebujesz, aby zapisać dźwięk. Zamiast tego można zapisać tekst do późniejszego korzystania 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];
Gdy jesteś gotowy do syntezy tekstu, tylko czytać z pliku i podłącz go z powrotem do AVSpeechSynthesizer
. Rozumiem, że to rozwiązanie nie zadziała lub nie będzie stosowane we wszystkich przypadkach (np. Jeśli musisz wysłać plik dźwiękowy do kogoś).
To tylko kilka z możliwych rozwiązań tego problemu, które stanowią obejście problemu i mogą, ale nie muszą, działać w zależności od konkretnego scenariusza. YMMV. Powodzenia!
To API jest nowe, więc może brakować pewnych funkcji, które mogą zostać dodane później. Może zagłębić się w sposób nagrywania dowolnego odtwarzanego dźwięku? – erdekhayser
Tak, już ustawiłem AVAudioRecoder już, ale chciałem tylko sprawdzić, czy było czystsze rozwiązanie. – Sean
Czy znalazłeś odpowiednie rozwiązanie dla tego problemu? Szukam czegoś podobnego. –