Nodejs 如何实现音频自动断句

发布于 1周前 作者 phonegap100 来自 nodejs/Nestjs

请问现在的音频自动断句有没有通用的方法?

最近在做听写 但是中间停顿的时间太短 所以想要自动断句 把停顿的时间延长 就不用一直手动回退和暂停了

谢谢

[Edit] 识别音频的内容并非必要 因为我有原文 如果不需要识别音频内容就能断句会更好


Nodejs 如何实现音频自动断句
14 回复

vad 了解一下。


  1. vad +1 基本思路就是音频先转 pcm ,然后做 vad 切分
    2. 偷懒的话可以直接调用 asr 供应商,百度/阿里之类的好像都会有点免费额度,一般返回 text 都带 timestamp 的,按照 timestamp 切就行

谢谢 第一点有 vad 的库吗

#4 我知道有 python 的 https://pypi.org/project/webrtcvad-wheels/ ,你找找又没其它语言的,这个是 google 之前开源的 webrtcvad

可以私有部署阿里的 funasr 带 punc 的模型,有时间戳

谢谢 不过 python 我不会

谢谢 私有部署有点麻烦 相比之下我还是用商用的免费额度吧

是 onnx 的模型,多种语言都可以调用

啊 我看见了 web 版本的在这里 https://github.com/ricky0123/vad

小米的没人用吗

在 Node.js 中实现音频自动断句(即将连续的音频文件分割成多个句子或段落),通常需要使用一些音频处理库。一个常用的方法是利用 ffmpegfluent-ffmpeg 库来处理音频文件,并结合语音识别库(如 google-cloud-speechwatson-developer-cloud)来识别句子的边界。

以下是一个简单的示例,展示了如何使用 fluent-ffmpeg 进行音频处理,以及如何通过伪代码描述与语音识别库的集成(由于篇幅限制,具体语音识别实现未包含):

const ffmpeg = require('fluent-ffmpeg');
const fs = require('fs');

// 假设你已经有一个音频文件 'input.wav'
const inputFile = 'input.wav';
const outputDir = './output/';

// 创建一个目录来保存分割后的音频文件
if (!fs.existsSync(outputDir)){
    fs.mkdirSync(outputDir);
}

// 使用ffmpeg分割音频(这里只是一个简单的按时间分割的示例)
ffmpeg(inputFile)
  .setStartTime('00:00:00')
  .setDuration('10') // 例如,每10秒分割一次
  .outputOptions('-c copy')
  .on('end', function() {
    console.log('Processing finished !');
  })
  .save(outputDir + 'output.wav');

// 注意:上述代码只是按时间分割,并非真正的断句。
// 真正的断句需要结合语音识别库,识别句子边界后再进行分割。

要实现真正的断句,需要在上述流程中插入语音识别步骤,识别到句子结束时再进行分割。这通常涉及复杂的音频处理和自然语言处理技术。

回到顶部