Node.js中直接合并google-tts-api返回的多个Base64音频字符串
直接合并Google TTS Base64音频的Node.js方案
可以直接通过Buffer拼接实现,无需转存MP3文件或调用ffmpeg,核心逻辑是利用MP3的帧结构特性——同参数的MP3片段可直接拼接。具体步骤如下:
实现步骤
- 提取每个Base64字符串的纯编码部分:去掉
data:audio/mpeg;base64,前缀 - 将纯Base64转换为Node.js Buffer
- 拼接所有Buffer为一个大Buffer
- 再将合并后的Buffer转回Base64(可选添加data URI前缀)
代码示例
const { getAllAudioBase64 } = require('google-tts-api'); async function mergeTTSAudio() { // 获取6个Base64音频字符串数组 const audioBase64List = await getAllAudioBase64({ text: '需要转换的长文本内容', lang: 'zh-CN', // 其他配置参数 }); // 处理每个Base64,转为Buffer const audioBuffers = audioBase64List.map(base64Str => { // 移除data URI前缀,确保只保留纯Base64编码 const pureBase64 = base64Str.replace(/^data:audio\/mpeg;base64,/, ''); return Buffer.from(pureBase64, 'base64'); }); // 拼接所有Buffer const mergedBuffer = Buffer.concat(audioBuffers); // 转换为合并后的Base64,可选择添加回data URI前缀 const mergedAudioBase64 = `data:audio/mpeg;base64,${mergedBuffer.toString('base64')}`; // 使用合并后的Base64,比如写入文件或前端播放 console.log('合并完成的Base64音频:', mergedAudioBase64); } mergeTTSAudio();
失效原因说明
如果之前的方案没生效,大概率是没有正确移除data URI前缀,导致Base64转Buffer时出错。Google TTS返回的音频默认参数一致,无需额外处理格式兼容性问题。
内容的提问来源于stack exchange,提问作者Arya Anish
相关产品推荐
相关产品推荐

