如何在Node.js中将.wav文件转换为.raw文件以适配Google Speech API?
Node.js环境下将WAV转为RAW格式的方法
在Node.js里可以借助fluent-ffmpeg库完成WAV到RAW的转换,这个库封装了FFmpeg的功能,能轻松处理音频格式转换,步骤如下:
1. 安装依赖
首先安装fluent-ffmpeg包:
npm install fluent-ffmpeg
注意:你的系统需要先安装FFmpeg工具——
- Linux:用包管理器安装,比如
apt install ffmpeg(Debian/Ubuntu)或yum install ffmpeg(CentOS) - macOS:通过Homebrew安装
brew install ffmpeg - Windows:从FFmpeg官网下载二进制文件,添加到系统环境变量中
2. 转换代码示例
下面是针对Google Speech API需求的转换代码(输出16kHz单声道、16位小端PCM格式的RAW文件,这是Google Speech API常用的参数):
const ffmpeg = require('fluent-ffmpeg'); const path = require('path'); // 替换为你的输入WAV文件路径 const inputWav = path.resolve(__dirname, 'your-audio.wav'); // 替换为你的输出RAW文件路径 const outputRaw = path.resolve(__dirname, 'audio-output.raw'); ffmpeg(inputWav) .outputOptions([ '-f s16le', // 指定输出格式为16位小端PCM '-ar 16000', // 设置采样率为16000Hz '-ac 1' // 设置单声道 ]) .save(outputRaw) .on('end', () => { console.log('WAV转RAW格式完成'); }) .on('error', (err) => { console.error('转换失败:', err.message); });
3. 参数说明
如果Google Speech API有其他格式要求,可调整outputOptions里的参数:
-ar:采样率,比如8000Hz或44100Hz,按需修改-ac:声道数,双声道设为2-f:编码格式,s16le是常用的PCM格式,对应16位无符号整数
内容的提问来源于stack exchange,提问作者Jerds
相关产品推荐
相关产品推荐

