利用ffmpeg对两个音频文件进行混音处理

前言

最近,拿到了一个语音识别程序,想测试一下它识别的准确性。原本程序有一段自己的测试音频,准确性还可以,但是,自己想增加一下测试素材的复杂性。想到了在原本的测试音频中引入干扰数据(噪点),再看一下语音识别程序的健壮性。

正文

1、素材介绍

原本程序自带的音频测试素材是一段时长 24 秒的 wav 文件,其中包含了关键词 Yes 和 No,两个关键词出现的具体时间点如下:

yes @1100ms

no @5500ms

yes @9100ms

no @13600ms

yes @17100ms

no @21600ms

想引入的噪点数据是前段时间在抖音上比较火的背景音乐------《野花与栀子花》,具体内容这里就省略了。

2、混音处理

最基础的 ffmpeg 混音命令如下:

ffmpeg -i test.wav -i flowers.mp3 -b:a 16k -ac 2 -ar 48000 -filter_complex "amix=inputs=2" mixed_audio.wav

简单介绍一下上述参数:

-b:a 16,音频码率为16kbps

-ac 2,音频声道数为2

-ar 48000,音频采样率为48kHz

-filter_complex "amix=inputs=2" ,音频过滤器

执行结果如下:

生成的混音文件 mixed_audio.mp3 包含了两个输入音频文件的内容,只是叠加到了一起。不过细心的网友会发现,这个输出音频文件的时长是以最长的输入音频文件长度为准的,也就是音乐《野花与栀子花》的时长,3分26秒。

如何让它以最短时长的音频文件长度为准呢,可以增加参数 duration=shortest,具体命令如下:

ffmpeg -i test.wav -i flowers.mp3 -b:a 16k -ac 2 -ar 48000 -filter_complex "amix=inputs=2:duration=shortest" mixed_audio.wav

执行结果如下:

3、测试

最后使用新生成的音频素材进行测试,准确率确实受到了影响,但是整体影响不大。

相关推荐
REDcker8 小时前
WebRTC抖动缓冲详解
ffmpeg·webrtc
Luke Ewin8 小时前
Fun-ASR-Nano实时语音识别并区分说话人 | FunASR | 开源实时语音识别模型
人工智能·语音识别·asr·fun-asr
searchforAI10 小时前
2026年音视频笔记工具横评:通义听悟、讯飞听见、Get笔记、Ai好记
人工智能·笔记·gpt·aigc·音视频·语音识别·知识图谱
碧海银沙音频科技研究院12 小时前
音频算法移植与算法高效协同开发方法论
深度学习·算法·语音识别
H Journey12 小时前
FFmpeg 整体介绍+安装+开发指南
ffmpeg
包子源12 小时前
浏览器 ffmpeg.wasm 视频压缩:Next.js 静态站集成完整指南
javascript·ffmpeg·wasm
nwsuaf_huasir13 小时前
RD图绘制-雷达回波模拟-距离多普勒图绘制
算法·matlab·语音识别
万岳科技程序员小金13 小时前
AI数字人系统源码开发教程|真人数字人APP与小程序搭建全流程解
人工智能·语音识别·ai数字人小程序·ai数字人系统源码·ai数字人软件开发·ai数字人平台搭建
李永奉13 小时前
杰理SDK开发-【BUG】软件开启音量同步连接华为、荣耀手机没有自动开启音量同步
单片机·嵌入式硬件·mcu·物联网·智能手机·bug·语音识别
Geometry Fu14 小时前
《智能终端与边缘计算》第八章 智能终端与边缘计算应用与案例分析(实时语音识别、图像处理与计算机视觉、推荐系统)
图像处理·边缘计算·语音识别·边缘计算应用