阿里云

语音合成之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格式的音频文件合成。


喜欢就点个赞吧

发表评论

需要先登录,才能发表评论哦!登录

网友评论
暂无评论