You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测短音频片段是否存在于长音轨中并获取匹配起止时间戳

音频片段匹配解决方案

以下两种方案均可实现你的需求:

方案1:Python 代码实现(自定义程度高)

核心原理为提取音频特征后做滑动匹配,准确率可控。

  • 安装依赖:pip install librosa numpy scipy
  • 核心实现逻辑:
import librosa
import numpy as np
from scipy.signal import correlate

# 加载音频,统一重采样为16kHz单声道,降低计算量
audio1, sr = librosa.load("audio1.mp3", sr=16000, mono=True)
audio2, sr = librosa.load("audio2.mp3", sr=16000, mono=True)

# 提取MFCC特征
mfcc1 = librosa.feature.mfcc(y=audio1, sr=sr, n_mfcc=13)
mfcc2 = librosa.feature.mfcc(y=audio2, sr=sr, n_mfcc=13)

# 特征归一化
mfcc1 = (mfcc1 - np.mean(mfcc1)) / np.std(mfcc1)
mfcc2 = (mfcc2 - np.mean(mfcc2)) / np.std(mfcc2)

# 做互相关计算找匹配峰值
corr = correlate(mfcc2.T, mfcc1.T, mode="valid")
peak_idx = np.argmax(corr)

# 转换为时间戳
hop_length = 512 # librosa默认帧移
start_time = peak_idx * hop_length / sr
end_time = start_time + len(audio1) / sr

print(f"匹配起始时间:{start_time:.2f}秒,结束时间:{end_time:.2f}秒")

如果匹配结果误差较大,可以调整互相关的阈值过滤误匹配,或增加MFCC的维度提升特征区分度。

方案2:命令行工具方案(无需写代码)

使用Chromaprint音频指纹工具实现快速匹配:

  1. 先安装ffmpeg和chromaprint工具,Windows、macOS、Linux均有对应的二进制安装包
  2. 统一转换两段音频为相同参数的wav格式,降低匹配误差:
ffmpeg -i audio1.mp3 -ar 16000 -ac 1 audio1.wav
ffmpeg -i audio2.mp3 -ar 16000 -ac 1 audio2.wav
  1. 生成两段音频的原始指纹:
fpcalc -raw audio1.wav > audio1_finger.txt
fpcalc -raw audio2.wav > audio2_finger.txt
  1. 匹配两个指纹序列的重合位置,即可换算得到对应的起止时间戳,匹配到的起始时间加audio1的时长就是结束时间。

内容的提问来源于stack exchange,提问作者Cas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 23:39:00