如何以编程方式组合.wav文件?

时间:2011-12-02 08:42:26

标签: iphone core-audio

我想只用数字播放某种文字转语音。我可以录制10个wav文件,但是如何以编程方式将它们组合起来?

例如,用户输入1234,文本转语音将1.wav与2.wav,3.wav和4.wav结合起来产生播放“一二三四”的1234.wav。

3 个答案:

答案 0 :(得分:0)

1)创建一个新的目标样本缓冲区(您需要知道大小)。

2)读取样本(例如,使用AudioFile和ExtAudioFile API)并将它们按顺序写入缓冲区。您可能希望在文件之间添加静音。

如果您的文件的位深度相同(目标位深度 - 16应该没问题)和采样率,这将有所帮助。

或者,如果您有所有文件的固定,已知,采样率和位深度,您可以将它们保存为原始样本数据并在更短的时间内完成,因为您可以简单地按原样附加数据而无需编写所有文件额外的音频文件阅读程序。

答案 1 :(得分:0)

开源项目wavtools为这类工作提供了很好的参考,如果你对perl没问题的话。否则有类似的question和一些java示例。

答案 2 :(得分:0)

简化的通用.wav(RIFF)文件格式在原始PCM样本前面只有一个44字节的标头。因此,对于这些简单类型的.wav文件,您可以尝试将文件作为原始字节读取,从除第一个文件之外的所有文件中删除44字节标头,并连接样本。或者直接使用Audio Queue API播放连接的样本。