顶顶通语音识别使用说明
介绍
顶顶通语音识别软件(asrproxy)是一个对接了多种语音识别接口的语音识别系统。可私有化部署(支持中文英文和方言等,支持一句话识别、实时流识别、多声道录音文件识别。
原理
asrproxy内嵌了阿里达摩院的开源语音识别工具包FunASR,后续我们也会使用自有的预料来增强模型,以后也会添加openai的开源模型whisper 。asrproxy也对接了主流的ASR云服务商,比如阿里云,科大讯飞,腾讯云,mrcp等。使用同一套接口就可以无缝切换各种ASR。
一句话识别接口和录音文件识别接口
识别参数放在http请求头里面,声音文件内容通过post发送,不需要编码发送原始文件就可以。
POST /asr HTTP/1.1
Host: 116.62.146.93:9990
User-Agent: Mozilla/5.0
Accept: */*
Cache-Control: max-age=0
Connection: close
id:test
samplerate: 8000
signature:605bef92414621abfca073ebc6ad7d3b
timestamp:1697505856
engine:shortsentence
Content-Length: 30240
声音数据
识别结果通过JSON返回。
HTTP/1.1 200 OK
Date: Tue, 17 Oct 2023 01:25:36 GMT
Server: www.ddrj.com
Content-Length: 35
Connection: Keep-Alive
Content-Type: text/plain
Pragma: no-cache
Cache-Control: private, max-age=0, no-cache{"code":"0","desc":"识别结果"}
请求参数说明
-
timestamp 时间戳和服务器误差只允许5分钟内
-
id asrproxy.json配置的用户id(asrproxy.json->short_sentence_asr->users)
-
signature 签名 md5(key+timestamp) 本例中key是test,md5(test1697505856)=605bef92414621abfca073ebc6ad7d3b。
key配置位置:asrproxy.json->short_sentence_asr->users->id->key -
engine 引擎类型 asrproxy.json->groups配置ASR引擎,默认配置是 shortsentence
-
hostwords 热词,多个热词用空格分开
-
datatype 数据类型,不设置默认是pcm类型
- pcm 原始的PCM数据,
- wav wav格式的数据
- mp3 mp3格式的数据
- url 通过URL获取文件
-
samplerate datatype是pcm时有效,声音采样频率,不设置默认是8000
-
sentence_time 是否需要输出句子时间,设置为true输出。
-
post内容
-
datatype是pcm、wav、mp3时是原始的声音数据
-
datatype是url的时候是josn格式的要识别的文件信息
{ "uuid":"唯一的ID,回调通知用", "callback_url":"识别结果回掉URL。", "file_url":"要识别文件的URL,支持本地文件的绝对路径和http文件", "ext":"wav|mp3|pcm"//http返回的数据类型,如果file_url是本地文件会根据文件后缀来识别文件类型 }
-
响应参数说明
- code 0 没错误 其他错误代码,如果有错误desc内容是错误信息
- desc
-
识别单声道文件时desc是字符串类型的识别结果。
-
识别多声道文件时并且sentence_time设置为fasle,desc字符串数组类型[“第一声道的识别结果”,“第二声道的识别结果”]
-
sentence_time 设置为true,desc是二维数组
- silence_duration 句子前面的静音时间,单位秒
- begin_time 句子开始时间,单位秒
- end_time 句子结束时间,单位秒
- speech_rate 语速,单位为每分钟字数
{"uuid": "","code": "0","desc": [[{"silence_duration": 1.36,"begin_time": 1.36,"end_time": 3.19,"speech_rate": 131.148,"text": "喂你好。"}, {"silence_duration": 0.74,"begin_time": 3.93,"end_time": 17.76,"speech_rate": 303.688,"text": "这边是百万医疗项目的客服哈。"}],[{"silence_duration": 1.36,"begin_time": 1.36,"end_time": 3.19,"speech_rate": 131.148,"text": "喂你好。"}, {"silence_duration": 0.74,"begin_time": 3.93,"end_time": 17.76,"speech_rate": 303.688,"text": "这边是百万医疗项目的客服哈。" }] ] }
-
测试方法
接口测试地址 http://demo.ddrj.com:9990/asr
浏览器直接上传文件测试地址 http://demo.ddrj.com:9990/test
可用curl命令测试,为了调过验证签名步骤,需要把asrproxy.json->short_sentence_asr->users->id(test)里面添加"not_validate_signature":true这个配置。
一句话识别测试
1.wav改成要识别的文件,如果识别的文件是mp3的,datatype:wav也要改成datatype:mp3
curl -H "id:test" -H "engine:shortsentence" -H "datatype:wav" -X POST --data-binary @1.wav http://demo.ddrj.com:9990/asr
录音文件识别测试
curl -H "id:test" -H "engine:shortsentence" -H "datatype:url" -X POST -d "{\"ext\":\"mp3\",\"uuid\":\"name\",\"file_url\":\"http://demo.ddrj.com/t1.mp3\",\"callback_url\":\"http://demo.ddrj.com/ttsresult\"}" http://demo.ddrj.com:9990/asr
实时流识别接口
通过websocket连接上 ws://127.0.0.1:9988 ,发送一个请求头,然后发送二进制的声音流,结束识别发送字符串END结束识别。
引导头格式为 时间戳json的参数\0,注意\0是一个二禁制的0。
1699344741507{"callid":"07ca13d3-55cc-47ef-a591-ffaee83d0e0b","asr_mode":1,"hot_word":"","asr_params":{"group":"default"},"vad_min_active_time_ms":100,"vad_max_end_silence_time_ms":1000,"wait_speech_timeout_ms":5000,"max_speech_time_ms":60000,"samples_per_second":8000}\0
- asr_mode: asr模式 0只第一句话 1 持续识别
- hot_word: 热词 ,需要asr引擎支持
- asr_params: asr参数,可用来选择asr引擎 {“group”:“default”}
- vad_min_active_time_ms: 最小说话时间,需要ASR引擎支持
- vad_max_end_silence_time_ms: 最大静音时间,需要ASR引擎支持
- wait_speech_timeout_ms: 等待说话时间,需要ASR引擎支持
- max_speech_time_ms: 最大识别时间,需要ASR引擎支持
- samples_per_second: 声音频率 8000或者 16000
返回识别结果
【标记1个字节-识别结果】
标记字符含义
0:中间结果
1:句子结束,对于支持长时间识别的ASR才支持,用于断句。
F:识别结束,客户端已经发送了END
f:识别结束,客户端没有发送END,ASR检测到静音太长认为停止说话了。
E:ASR错误
标志是f/F/E的时候客户端要主动断开连接
测试页面
http://demo.ddrj.com/wsasr.html
配置
{"key":"asrproxy.license", //授权文件路径"log":{"console_level":0, //输出控制台日志等级0-5(0:DEBUG, 1:INFO, 2:NOTICE, 3:WARNING, 4:CRIT, 5:CONSOLE)"file_level":0, //输出到文件日志等级0-5(0:DEBUG, 1:INFO, 2:NOTICE, 3:WARNING, 4:CRIT, 5:CONSOLE)"file_maxsize":100, //文件大于多少M就自动创建新的日志文件。"file_number":10 //最大保留日志文件个数},"short_sentence_asr":{"listen_ip":"0.0.0.0","listen_port":9990,"bgasr_thread_count":null, //录音文件识别的ASR线程个数,如果不设置就是根据CPU个数自动设置。"users":{//用户ID,可以配置多个用户"test":{ "not_validate_signature":false,//是否禁用验证签名,改成true,就是不验证签名"key":"test",//用户KEY"ip":"*" //*任意IP都可以访问,也可以限制可以访问的ip}}},"asr":{"listen_ip": "127.0.0.1","listen_port": 9988,"storage": "record", //asr录音目录,调用asr时,设置了asr_params.recordfilename才会录音。"acl":"*", //哪些IP可以访问,配置*任意IP都可以访问,多个IP用逗号隔开,如果不配置acl,通过127.0.0.1不需要配置在ACL里面也可以访问。"interface": {"funasr": {"type": "funasr","engine": "sentence", //一句话"enable_itn":true, //数字转换成阿拉伯数字"model-dir": "model/paraformer-large"//模型目录},"funasr_realtime": {"type": "funasr","engine": "2pass",//offline:关闭实时识别 online:开启实时识别 2pass:混合2种模式,需要更多CPU。"enable_itn":true, //数字转换成阿拉伯数字 "model-dir": "model/paraformer-large","online-model-dir": "model/paraformer-large-online","punc-dir": "model/punc-realtime","chunk-size":4800 } },"groups":{//实时识别使用的ASR"default":{ "mode":0, //0:顺序使用,当使用数量等于count的时候切换下一个 1:循环使用"enable": //启用的那些ASR配置["funasr_realtime"]},//一句话识别和文件识别使用的ASR"shortsentence":{"mode":0,"enable":["funasr"]}}}
}相关文章:
顶顶通语音识别使用说明
介绍 顶顶通语音识别软件(asrproxy)是一个对接了多种语音识别接口的语音识别系统。可私有化部署(支持中文英文和方言等,支持一句话识别、实时流识别、多声道录音文件识别。 原理 asrproxy内嵌了阿里达摩院的开源语音识别工具包FunASR,后续我们也会使用自有的预料…...
重磅发布 OpenAI 推出用户自定义版 ChatGPT
文章目录 重磅发布 OpenAI 推出用户自定义版 ChatGPT个人简介 重磅发布 OpenAI 推出用户自定义版 ChatGPT OpenAI 首届开发者大会 (OpenAI DevDay) 于北京时间 11 月 7 日凌晨 02:00 开始,大会上宣布了一系列平台更新。其中一个重要更新是用户可以创建他们自己的自定…...
Java 幼儿园(20231111)读取 json 文件
1、功能场景 (1)多人合作开发一个功能模块时,需要调用外部接口 (2)对方接口的开发工作还没有完成,只能提供一个返回值的示例文件 json 文件。 (3)返回的 json 数据多达几百个字段。 …...
云计算、大数据技术的智慧工地,实现对建筑工地实时监测、管理和控制的一种新型建筑管理方式
智慧工地是利用物联网、云计算、大数据等技术,实现对建筑工地实时监测、管理和控制的一种新型建筑管理方式。 智慧工地架构: 1、终端层: 充分利用物联网技术、移动应用、智能硬件设备提高现场管控能力。通过RFID、传感器、摄像头、手机等终…...
功能案例 -- 通过开关,改变白天和黑夜
效果展示 代码展示 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><style>:root {--default-bac-color: #f…...
Linux编写一个极简版本的Shell
Linux编写一个极简版本的Shell 📟作者主页:慢热的陕西人 🌴专栏链接:Linux 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 本博客主要内容在Linux环境下ÿ…...
亚马逊云AI应用科技创新下的Amazon SageMaker使用教程
目录 Amazon SageMaker简介 Amazon SageMaker在控制台的使用 模型的各项参数 pytorch训练绘图部分代码 Amazon SageMaker简介 亚马逊SageMaker是一种完全托管的机器学习服务。借助 SageMaker,数据科学家和开发人员可以快速、轻松地构建和训练机器学习模型&#…...
Eigen:旋转向量(Angle-Axis)转换为四元素和旋转矩阵
0. 在固定欧拉角系下。 绕固定系旋转,旋转的先后顺序为X、Y、Z。当然也支持XYZ的任意顺序旋转。 1. 转为四元素 Eigen::Quaterniond q Eigen::AngleAxisd(yaw, Eigen::Vector3d::UnitZ()) *Eigen::AngleAxisd(pitch, Eigen::Vector3d::UnitY()) *Eigen::AngleAxi…...
C#8.0本质论第十二章--泛型
C#8.0本质论第十二章–泛型 C#通过泛型来促进代码重用,在词义上等价于C模板。 在泛型编程中,数据类型也是一种参数。 12.1如果C#没有泛型 为object的方法使用值类型时,“运行时”将自动对它进行装箱,获取值类型的实例时则需要…...
Python与ArcGIS系列(七)自动化打印地图
目录 0 简述1 获取可用打印机列表2 打印地图3 导出地图至PDF4 导出地图至图像0 简述 本篇介绍如何利用arcpy实现获取可用打印机列表、打印地图、导出地图至PDF和图像。 1 获取可用打印机列表 通过arcpy提供的ListPrinterNames()函数可以生成可用的打印机列表。 import arcpy.m…...
基于STM32单片机抢答器设计
**单片机设计介绍, 基于STM32单片机抢答器设计-Proteus仿真 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于STM32单片机的抢答器设计可以用于教育和培训场景中的抢答游戏或考试环节。以下是一个基本的介绍设计步骤…...
冯·诺伊曼体系结构--操作系统
文章目录 1.认识冯诺依曼系统1.1约翰冯诺依曼1.2冯诺依曼结构1.3存储器的读写速度1.4对冯诺依曼结构的认识1.5冯诺依曼结构在生活中的演示 2.操作系统--“搞管理”的软件2.1概念2.2OS存在的意义2.3管理的方式2.4系统调用和库函数概念 1.认识冯诺依曼系统 1.1约翰冯诺依曼 1.2冯…...
IDEA插件开发--持久化配置信息方案
这里写自定义目录标题 配置信息持久化存储保存配置文件的方式每种方式的实现方案1.PropertiesComponent:2.PersistentStateComponent:3.Project Settings:4.外部文件: 5.数据库:6.加密数据:7,自定义配置文件…...
Vscode禁止插件自动更新
由于电脑的vscode版本不是很新。2022.10月份的版本1.7.2,电脑vscode的python插件装的也是2022年4月份的某个版本,但插件经常自动更新,导致python代码无法Debug,解决办法: 点设置,搜autoUpdate, 把红色框选成无...
Zookeeper篇---第六篇
系列文章目录 文章目录 系列文章目录一、请简述Zookeeper的选主流程二、为什么Zookeeper集群的数目,一般为奇数个?三、知道Zookeeper监听器的原理吗?一、请简述Zookeeper的选主流程 Zookeeper的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做…...
mysql数据库存储过程之游标(光标cursor)
游标是用来存储查询结果集的数据类型,在存储过程和函数中可以使用游标对结果集进行循环的处理。游标的使用包括游标的声明、open、fetch和close。 一、语法。 #声明游标 declare 游标名称 cursor for 查询语句; #开启游标 open 游标名称; #获取游标记录 fetch 游标…...
「帝国风暴兵」加入 The Sandbox,推出真实的全新人物化身系列和体验!
我们很高兴宣布与流行文化中最具标志性的娱乐品牌 Shepperton 设计工作室的「帝国风暴兵」达成合作伙伴关系。这一合作标志着该科幻品牌首次进入元宇宙,让风暴兵的粉丝们以全新的方式体验「帝国风暴兵」。 在这个体验中,玩家将置身于帝国风暴兵的营地&am…...
asp.net员工管理系统VS开发sqlserver数据库web结构c#编程包括出差、请假、考勤
一、源码特点 asp.net员工管理系统是一套完善的web设计管理系统(主要包括出差、请假、考勤基础业务管理),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010 ,数据库为sqlserver2008&a…...
C++套接字库sockpp介绍
sockpp是一个开源、简单、现代的C套接字库,地址为:https://github.com/fpagliughi/sockpp,最新发布版本为0.8.1,license为BSD-3-Clause。目前支持Linux、Windows、Mac上的IPv4、IPv6和Unix域套接字。其它*nix和POSIX系统只需很少的…...
Mac M2开发环境安装
持续更新 brew 安装 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"JAVA多版本环境 ## 终端下载安装 brew install --cask temurin8 brew install --cask temurin11 brew install --cask temurin17## vim ~/.…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
C#最佳实践:为何优先使用as或is而非强制转换
C#最佳实践:为何优先使用as或is而非强制转换 在 C# 的编程世界里,类型转换是我们经常会遇到的操作。就像在现实生活中,我们可能需要把不同形状的物品重新整理归类一样,在代码里,我们也常常需要将一个数据类型转换为另…...
