语音合成之PHP合并多个mp3文件为一个文件
近期在做一个文字转语音的功能,使用的是百度AI的语音合成接口,使用起来比较简单,文档说明也比较好。但是在转换文字长度上面有限制,官方给出解决办法是多次调用接口生成音频文件。这个方式也是可以的。但是我想在文字转换后可以播放、暂停等功能,如果是多个音频文件,那就没有办法进行暂停操作了。或者操作起来比较麻烦,还是将多个音频文件合成到一个文件中。
以前也没有做过这方面的合成。想了一天的时间,晚上使用PHP的fopen函数操作的。下面一起来看一下代码吧!
$file = fopen('./music.mp3', 'wb'); for ($a = 0; $a < $num; $a++) { $cacheFileName = './file/' . $a . '.mp3'; $cacheFile = fopen($cacheFileName, 'rb'); $content = fread($cacheFile, filesize($cacheFileName)); fwrite($file, $content); fclose($cacheFile); unlink($cacheFileName); } fclose($file);
读取目录下所有的音频文件,例如0.mp3、1.mp3、2.mp3。单文件我是按照0下标开始生成的。通过循环依次读取文件并打开文件,将文件信息写入到目标合成文件中,并关闭文件,然后将单个文件进行删除。经过测试合成的文件可以正常播放。目前只测试了mp3格式的音频文件合成。