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



我想播放一些只有数字的文本转语音。我可以录制10个wav文件,但我如何以编程方式组合它们?

例如,用户输入1234,文本转语音将1.wav与2.wav、3.wav和4.wav组合成1234.wav,播放"一二三四"。

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

2)读取示例(例如使用AudioFile和ExtAudioFile api)并按顺序将它们写入缓冲区。您可能需要在文件之间添加静默。

如果你的文件都是相同的位深度(目标位深度- 16应该很好)和采样率,这将会有所帮助。

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

开源项目wavtools为这类工作提供了一个很好的参考,如果您可以使用perl的话。否则,在一些java示例中也会出现类似的问题。

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

最新更新