首页 > 编程语言 >新一代 Kaldi: 支持 JavaScript 进行本地语音识别和语音合成啦!

新一代 Kaldi: 支持 JavaScript 进行本地语音识别和语音合成啦!

时间:2024-03-17 10:33:07浏览次数:28  
标签:https sherpa onnx JavaScript Kaldi k2 语音 com

简介

新一代 Kaldi 部署框架 sherpa-onnx 支持的编程语言 API 大家庭中, 最近增加了一个新成员: JavaScript

为了方便大家查看,我们把目前所有支持的编程语言汇总成如下一张图。

注: 这个家庭还在不断的扩充,总有一款适合你!
后续我们会增加 DartRustWebAssembly 等支持。
如果你想贡献其他的语言,欢迎参与。

增加了对 JavaScript 的支持,意味着我们可以在 JavaScript 中使用 sherpa-onnx 提供的各种功能,比如

下图总结了所有的功能。

本文介绍如何在 JavaScript 中使用这些功能。

注:我们目前支持的是 NodeJS。 还不支持在浏览器中运行 sherpa-onnx。 请关注后续我们对 WebAssembly 的支持。

安装

我们已经把 sherpa-onnx 封装成 npm 包。如下图所示:

你只需要下面一条语句,就可以安装 sherpa-onnx:

npm install sherpa-onnx

本文使用 naudiodon2 读取麦克风。为了完成本文的测试, 你需要额外安装如下依赖:

npm install naudiodon2

下面的视频记录了完整的安装过程:

  01:55        
注: 请使用 node v13.14.0 版本进行测试。
当下面这个 issue 解决后,你可以使用新版本的 node. node-ffi-napi/node-ffi-napi#97

(请看 https://mp.weixin.qq.com/s/aBENCGdnS7wBEKnbipcVjA)

使用

安装完 sherpa-onnx 后,我们就可以开始使用它啦!

下面我们介绍如何使用 sherpa-onnx 的 JavaScript API 进行

  • 语音端点检测 (VAD)
  • 语音识别
  • 语音合成

本文用到的所有示例代码,都可以从下面的链接中找到。

https://github.com/k2-fsa/sherpa-onnx/tree/master/nodejs-examples

本文的所有演示,都在 nodejs-examples 目录进行。

语音端点检测 (VAD)

本例子演示如何使用 Silero VAD 在 JavaScript 中进行语音端点检测。

我们使用如下文件进行测试:

https://github.com/k2-fsa/sherpa-onnx/blob/master/nodejs-examples/test-vad-microphone.js

测试命令如下:

cd nodejs-examples
wget -q https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/silero_vad.onnx
node ./test-vad-microphone.js

演示视频如下。

  02:23        

语音合成 (TTS)

我们使用下述文件进行测试

https://github.com/k2-fsa/sherpa-onnx/blob/master/nodejs-examples/test-offline-tts-zh.js

为了给大家演示语音合成的 JavaScript API 有多么简单,我们把所有的代码截图如下:

测试命令为:

cd nodejs-examples
wget -q https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/vits-zh-aishell3.tar.bz2
tar xvf vits-zh-aishell3.tar.bz2
node ./test-offline-tts-zh.js

演示视频如下:

  01:06        

语音识别

我们给大家展示两个例子:

  • 流式 VAD + 非流式 Whisper 英文语音识别
  • 流式 Zipformer 中英文语音识别

更多的例子,请参考下面的文档

https://github.com/k2-fsa/sherpa-onnx/blob/master/nodejs-examples/README.md

流式 VAD + 非流式 Whisper 英文语音识别

我们使用 Whisper tiny.en 这个模型进行测试。测试文件为

https://github.com/k2-fsa/sherpa-onnx/blob/master/nodejs-examples/test-vad-microphone-offline-whisper.js

测试命令为:

cd nodejs-examples
wget -q https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/silero_vad.onnx
wget -q https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-whisper-tiny.en.tar.bz2
tar xvf sherpa-onnx-whisper-tiny.en.tar.bz2
node ./test-vad-microphone-offline-whisper.js

演示视频如下:

  03:35        

流式 Zipformer 中英文语音识别

我们使用一个中英文的流式 Zipformer 模型进行测试。

测试文件为

https://github.com/k2-fsa/sherpa-onnx/blob/master/nodejs-examples/test-online-transducer-microphone.js

测试命令为:

cd nodejs-examples
wget -q https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20.tar.bz2
tar xvf sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20.tar.bz2
node ./test-online-transducer-microphone.js

演示视频如下:

  01:44        

总结

本文向大家介绍了如何使用 sherpa-onnx 的 JavaScript API 进行语音识别、语音合成和语音端点检测 (VAD)。所有的计算 都在本地进行,不需要访问网络。

如果你对新一代 Kaldi 感兴趣或者有任何的问题,请通过下面的二维码联系我们。

标签:https,sherpa,onnx,JavaScript,Kaldi,k2,语音,com
From: https://www.cnblogs.com/chinasoft/p/18078236

相关文章

  • JavaScript学习 第三天
    一、数组(一)数组基本知识声明按顺序保存数据的数据类型<body><script>letarr=[1,2,'猪儿',true]</script></body>声明数组函数<body><script>letarr=newArray(1,2,'猪儿',true)</script></body>......
  • JavaScript学习 第一天
    一、什么是JavaScript(一)介绍是一种运行在浏览器的编程语言,进行人机交互(二)可以做什么可以做网页特效,表单验证,进行数据交互,还有服务端编程node.js(三)组成由ECMAScript和WebAPIs组成其中WebAPIs由DOM和BOM组成ECMAScript:js基础语法知识WebAPIs:DOM:操作文......
  • JavaScript操作函数
    JavaScript操作函数通过标签事件触发函数(js),在函数中又返回来对网页中的标签操作在js中如何能够操作网页中的标签在js语言中,认为每一个标签就是一个独一无二的对象,在js语言中可以获得网页中的标签,这样就可以在js中对标签的属性,内容,样式及逆行操作要操作哪个标签,首先......
  • JavaScript 数据驼峰结构转下划线结构
    //数据转换functionrecursionFunc(data){if(data&&typeof(data)=='object'){varobjif(Array.isArray(data)){obj=[]for(varitemofdata){obj.push(recursionFunc(item))}}else{......
  • TTS 擂台: 文本转语音模型的自由搏击场
    对文本转语音(text-to-speech,TTS)模型的质量进行自动度量非常困难。虽然评估声音的自然度和语调变化对人类来说是一项微不足道的任务,但对人工智能来说要困难得多。为了推进这一领域的发展,我们很高兴推出TTS擂台。其灵感来自于LMSys为LLM提供的Chatbot擂台。借鉴Chatb......
  • JavaScript 进阶(一)
    一、作用域作用域(scope)规定了变量能够被访问的“范围”,离开了这个“范围”变量便不能被访问。作用域分为:局部作用域、全局作用域。1.1局部作用域局部作用域分为函数作用域和块作用域。1.函数作用域:在函数内部声明的变量只能在函数内部被访问,外部无法......
  • JavaScript逆向之iwencai请求头参数加密过程解析
    iwencai网站实战url:http://iwencai.com/unifiedwap/home/index打开开发者工具,在搜索框中随便输入关键词,看流量包。(如果想将开发者工具的位置进行变换的,可以点击三个点进行切换)只有一条数据包,看看请求数据和响应数据。请求头中有一个特殊的Hexin-V,它的值与Cookie中的v的值......
  • JavaScript字符串和时间处理随笔
    2024-3-15记事1//待处理数组2letarr=[];3//筛选数组某个字段(某一列)4letjieshus=arr.railways.map(item=>item.jieshu);5//获取当前时间时间戳6letnow=Date.now();7//获取当前时间并转化成指定格式的日期字符串8letdate=newDate().toLo......
  • 【聆思CSK6语音大模型AI开发套件试用】增加对语音控制电梯功能的显示
    目录任务简介图形界面功能的实现添加LVGL控件添加显示楼层的函数系统字体的使用完整代码下载演示效果任务简介在上一篇博文中,我们介绍了在聆思CSK6语音大模型AI开发套件的开发板实现对云平台返回的结果进行处理,我们已经通过日志文件看到了数据的正确接收和解析。今......
  • 【你也能从零基础学会网站开发】Web建站之javascript入门篇 Array数组
    ......