websocket之语音包测试

本文对比了Java的vad4j和Python的webrtcvad在实时语音包测试中的应用,指出Java的vad4j由于缺少Opus解码器而无法直接使用,而Python的webrtcvad可用且支持Opus解码。前端使用MediaRecorderAPI录制音频并通过WebSocket传输,需要注意采样率和WebSocket接收限制。
摘要由CSDN通过智能技术生成

本文主要是关于实时语音包测试的小记:公司之前搞语音的同学推荐了三个包,如下:

Java:

        vad4j、webrtcvad的俩包

Python:

        webrtcvad的包

1. Java包目前测了下vad4j的包是无法使用的 ,vue通过传输websocket二进制的音频数据来检测

(目前还未测试解压缩后的数据,因为Java包目前还没找到相关Opus的解码器,一般是安卓的)

具体使用方式:

GitHub - orctom/vad4j: VAD for Java  -- demo

<dependency>
  <groupId>com.orctom</groupId>
  <artifactId>vad4j</artifactId>
  <version>1.0</version>
</dependency>
// use built-in threshold
try (VAD vad = new VAD()) {
  boolean isSpeech = vad.isSpeech(pcm);
  LOGGER.info("is speech: {}", isSpeech);
}

// or use threshold of your choise
try (VAD vad = new VAD()) {
  float score = vad.speechProbability(pcm);
  boolean isSpeech = score >= VAD.THRESHOLD;
  LOGGER.info("is speech: {}", isSpeech);
}

而webrtcvad的语音识别包是没有相关依赖~

https://github.com/jitsi/jitsi-webrtc-vad-wrapper

2. python的webrtcvad语音检测包是可以用的 ,而且相关的解码库也是正常可以解码的

前端使用的是MediaRecorder API ,此插件可以通过麦克风录制音频,并发送给websocket消息

mimeType(音频格式)为audio/webm;codecs=opus

表示的音频数据是WebM格式的音频流,使用Opus编码器进行压缩。

ps:这里传输的音频流数据,websocket接收后必须用Opus解码器进行解码音频流,且设置的相关参数如,采样率48000HZ,位深度16,单声道1这些前后端同学都要统一,其中采样率48000HZ是浏览器默认的采样率,如果自行设置了也会被覆盖,望周知~

3. websocket接收音频流的时候有个默认大小限制8000多,如果超过了这个限制是无法接收到音频流数据的,可以设置为300000 30M试试传输。

有问题及时留言,如果Java其他语音包能识别用,希望亲滴我

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值