Java 实现依赖TarsosDSP类库的VAD

Java 实现依赖TarsosDSP类库的VAD

vad 介绍

语音活性检测
(Voice activity detection,VAD), 也称为speech activity detection or speech detection, 是一项用于语音处理的技术,目的是检测语音信号是否存在。

目前开源vad项目多为c / c++ 很少有java项目

TarsosDSP 介绍

TarsosDSP是用于音频处理的Java库。其目的是提供一种易于使用的界面,以实用的音乐处理算法,以尽可能简单的方式在纯Java中实现,而没有任何其他外部依赖性。该库试图在既有能力完成实际任务又有足够紧凑和简单的方法之间达到最佳效果,以演示DSP算法的工作原理。TarsosDSP具有打击乐开始检测器和多种音高检测算法的实现:YIN,Mcleod Pitch方法和“动态小波算法音高跟踪”算法。还包括Goertzel DTMF解码算法,时间拉伸算法(WSOLA),重采样,滤波器,简单的合成,一些音频效果和音高转换算法。

TarsosDSP github主页

我这边使用了2.4版本 主要使用了 TarsosDSPAudioFormat TarsosDSPAudioFloatConverter SilenceDetector

详细内容参考2.4版本官方文档

2.4版本下载链接

代码vad类介绍

构造方法

VAD(String filePath, float sampleRate, int sampleSizeInBits, int noinputTimeout, int silenceTimeout)

参数为文件路径(filePath) 采样率(sampleRate) 位深度(sampleSizeInBits) 开始跳过的时长(noinputTimeout) 最大沉默时长(silenceTimeout)

启动方法

start()

读取目标文件并将字节按计算出100ms的长度放到队列中 并启动检测线程

检测线程

vadRunbale.run()

以100ms为单位时长 使用TarsosDSP提供的方法检测 检测到自定义的最大静默次数时结束线程

vad类源码

package com.jjd.test;

import be.tarsos.dsp.SilenceDetector;
import be.tarsos.dsp.io.TarsosDSPAudioFloatConverter;
import be.tarsos.dsp.io.TarsosDSPAudioFormat;
import org.apache.commons.io.IOUtils;

import java.io.*;
import java.util.concurrent.ConcurrentLinkedQueue;

public class VAD {
   

    private ConcurrentLinkedQueue<byte[]> audioQueue = new ConcurrentLinkedQueue<byte[]>();
    private boolean isRunning = false; // 识别引擎是否在执行识别
    private boolean isFinishReadFile = false; // 是否读取完文件
    private String filePath;
    private int readLength = 1600; // 100ms音频的字节数
    private int noinputTimeout = 1000; //跳过开始多少ms
    private int silenceMaxTimes = 10; // 以100ms为单位 检测连续的多少次静音
    private float sampleRate = 8000; // 采样率
    private int sampleSizeInBits = 16; //位深度

    public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值