Có thể ghi lại âm thanh được tạo ra bởi ứng dụng của bạn (không phải từ các ứng dụng khác). Mặc dù AVSpeech
không cung cấp API để lưu âm thanh được tạo, Apple có các API khác có thể thực hiện công việc. Giải pháp có lẽ không sạch như bạn muốn, nhưng nó sẽ hoạt động.
Apple cung cấp một khung được gọi là Audio Unit Framework để quản lý quá trình ghi và xử lý âm thanh nâng cao. Đây là Framework duy nhất trong SDK iOS (theo kiến thức của tôi) có thể phát và ghi âm đồng thời. Các Audio Unit Hosting Guide trông đầy hứa hẹn, và do đó, Audio Mixer Sample App.
Lưu ý: Tôi chưa thử sử dụng Khung đơn vị âm thanh với AVSpeechSynthesizer (có thể có hoặc không hoạt động). Tuy nhiên, xem xét AVSpeechSynthesizer chơi tốt với CoreAudio thì nó có nhiều khả năng nó sẽ làm việc với AudioUnits.
Nếu giải pháp trên không có tác dụng thì giải pháp đơn giản có thể thực hiện thủ thuật. AVSpeechSynthesizer
không yêu cầu bất kỳ kết nối mạng nào hoạt động đúng cách, vì vậy trong nhiều trường hợp, bạn có thể không cần để lưu âm thanh. Thay vào đó bạn có thể lưu các văn bản cho sau này sử dụng 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];
Khi bạn đã sẵn sàng để tổng hợp các văn bản, chỉ cần đọc nó từ tập tin và cắm nó trở lại vào AVSpeechSynthesizer
. Tôi nhận ra rằng giải pháp này sẽ không hoạt động hoặc áp dụng trong mọi trường hợp (ví dụ: nếu bạn cần gửi tệp âm thanh cho ai đó).
Đó chỉ là một vài giải pháp có thể cho vấn đề, cả hai cách giải quyết đều có thể hoặc có thể không hoạt động tùy theo trường hợp cụ thể của bạn. YMMV. Chúc may mắn!
Nguồn
2014-07-20 21:09:46
API này là mới và do đó có thể thiếu một số tính năng nhất định có thể được thêm vào sau này. Có thể xem xét cách ghi âm bất kỳ âm thanh nào đang phát? – erdekhayser
Vâng tôi đã thiết lập một bộ AVAudioRecoder nhưng chỉ muốn xem liệu có một giải pháp sạch hơn – Sean
Bạn có tìm thấy giải pháp phù hợp cho vấn đề này không? Tôi đang tìm cách để xây dựng một cái gì đó tương tự. –