简介

新一代 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 感兴趣或者有任何的问题,请通过下面的二维码联系我们。

新一代 Kaldi: 支持 JavaScript 进行本地语音识别和语音合成啦!的更多相关文章

  1. 原生JavaScript常用本地浏览器存储方法一(方法类型)

    有时需要将网页中的一些数据保存在浏览器端.好处就是当下次访问页面时,直接就可以从本地读取数据,不需要再次向服务器请求数据.目前常用的有以下几种方法: 1.cookie cookie会随着每次HTTP请 ...

  2. 如果您的浏览器不支持javascript功能

    如果您的浏览器不支持javascript功能或被禁止使用,那么在访问许多网站(包括此网站)时,某些功能将不可用.我们建议您打开javascript功能以获得最佳的浏览效果.以下是打开它的可能原因和方法 ...

  3. java ScriptEngine 使用 (支持JavaScript脚本,eval()函数等)

    Java SE 6最引人注目的新功能之一就是内嵌了脚本支持.在默认情况下,Java SE 6只支持JavaScript,但这并不以为着Java SE 6只能支持JavaScript.在Java SE ...

  4. SpiderMonkey-让你的C++程序支持JavaScript脚本

    译序 有些网友对为什么D2JSP能执行JavaScript脚本程序感到奇怪,因此我翻译了这篇文章,原文在这里.这篇教程手把手教你怎样利用SpiderMonkey创建一个能执行JavaScript脚本的 ...

  5. VS2015 企业版不支持 JavaScript 语法高亮、智能提醒

    2015年7月,微软终于放出了 Visual Studio 2015 正式版,博主安装了 Visual Studio 2015 企业版之后,居然不支持 JavaScript 的语法高亮.智能提醒功能, ...

  6. vs2015 不支持javascript的智能提示高亮

    有些人安装了vs2015后发现居然不支持javascrpt的高亮功能,连工具-选项-文本编辑器里面的javascript也没有了,楼主也碰到这么个情况了,估计是有与装了多个版本的原因,楼主电脑安装了V ...

  7. hi-nginx-1.4.9正式发布,支持javascript后端开发

    hi-nginx-1.4.9已经发布. 更新: 支持javascript后端开发 修复脚本搜索的一个bug 从这一版开始,hi-nginx开始支持javascript,这意味着把javascript应 ...

  8. python接口自动化29-requests-html支持JavaScript渲染页面

    前言 requests虽好,但有个遗憾,它无法加载JavaScript,当访问一个url地址的时候,不能像selenium一样渲染整个html页面出来. requests-html终于可以支持Java ...

  9. Sublime text代码补全插件(支持Javascript、JQuery、Bootstrap框架)

    Sublime text代码补全插件(支持Javascript.JQuery.Bootstrap框架)   插件名称:javascript-API-Completions 支持Javascript.J ...

  10. JavaScript读取本地json文件

    JavaScript读取本地json文件 今天调试了一上午,通过jQuery读取本地json文件总是失败,始终找不出原因,各种方法都试了 开始总以为是不是json格式的问题.高了半天不行 后来读了一个 ...

随机推荐

  1. helmfile调试

    说明 我们在调试helmfile编排的chart时,对于helm chart正常的情况下,我们编排的helmfile渲染模版的值出了问题,可能会存在以下的报错: helmfile template E ...

  2. 2025盘古石决赛-计算机&手机

    手机取证 分析鸿蒙手机检材,打网球定的日期是?[标准格式:4月5日] 在日历数据中 3月3日 分析鸿蒙手机检材,哪个浏览器搜索过鸿蒙开发教程?[标准格式:百度浏览器] uc数据搜索过 UC浏览器 分析 ...

  3. secp256k1算法详解三(点操作关键理论及源码分析)

    1 基础概念 1.1 Short Weierstrass Curve 椭圆曲线(Elliptic Curve,EC)是密码学中非常重要的代数结构,在几何上,椭圆曲线是由三次方程描述的一些曲线.不同的公 ...

  4. 长安车机安装三方APP

    前言 长安车机目前为基于安卓自研的系统. 目前 默认这个车机系统,不允许安装三方软件,具体表现为:插入u盘识别不出里边的apk文件. 自带的软件版本都特别低,且不支持升级,只能等待整个车机系统连带升级 ...

  5. taro小程序日期选择器

    taro-swiper-week taro-swiper-week 是一个基于 taro 的日期选择器控件. 可以用在h5.微信小程序等众多平台! 简体中文 | English 使用 先安装 npm ...

  6. 知道主机名称 如何知道ip地址

    举例 ping -4 raspberrypi 就可以知道 ip 地址了.

  7. Git命令这样用,代码管理轻松搞定

    Git命令这样用,代码管理轻松搞定 在日常开发中,Git命令是每个程序员必备的技能.但是面对几十个Git命令,很多同学总是记不住.用不对.今天就来整理一份最实用的Git命令清单,让你的代码管理变得轻松 ...

  8. Native安全之破解与补丁

    Native安全之破解与补丁 Native程序 Native程序指能被计算机系统直接加载并由CPU执行的程序.其文件格式常见有Windows的PE(如.exe, .dll).Linux的ELF.mac ...

  9. NOIP2014 D2T1 奶酪

    NOIP2014 奶酪 题面: NOIP2014 提高组 D2T1 现有一块大奶酪,它的高度为 \(h\),它的长度和宽度我们可以认为是无限大的,奶酪中间有许多半径相同的球形空洞.我们可以在这块奶酪中 ...

  10. 从Mono脚本生成Entity:深入理解Unity DOTS中的Archetype、Chunk与Entity结构设计

    Unity 的 DOTS(Data-Oriented Technology Stack)是面向性能极致优化的一种架构范式,其底层结构设计并非偶然,而是深思熟虑的结果.本篇文章将从开发者最熟悉的入口-- ...