asrproxy 安装配置

安装asrproxy

根据安装包的安装手册完成asrproxy的安装,安装目录为 /ddt/asrproxy,如果安装到了其他目录,需要创建一个软链接到 /ddt/asrproxy,ln -s 安装目录 /ddt/asrproxy 。 配置文件为 asrproxy.json。

下载FunASR模型

  1. 流识别(websocket实时传输音频流识别),比如对接mod_cti(新一代电话机器人和实时质检)

    • 普通话模型

      curl -s http://down.ddrj.com/getasrmodel.sh | bash -s paraformer-large paraformer-large-online

    • 热词模型(需要更多的CPU,支持定义热词)

      curl -s http://down.ddrj.com/getasrmodel.sh | bash -s paraformer-large-contextual paraformer-large-online

  1. 一句话识别(http接口提交录音文件识别),比如对接mod_vad(老电话机器人接口),

    • 普通话模型

      curl -s http://down.ddrj.com/getasrmodel.sh | bash -s paraformer-large

    • 热词模型(需要更多的CPU,支持定义热词)

      curl -s http://down.ddrj.com/getasrmodel.sh | bash -s paraformer-large-contextual

    • 8K模型(普通话)

      curl -s http://down.ddrj.com/getasrmodel.sh | bash -s paraformer-8k

    • SenseVoice-Small 模型 支持 中文、粤语、英语、日语、韩语,和情感辨识(情绪识别)

      curl -s http://down.ddrj.com/getasrmodel.sh | bash -s SenseVoice-Small

模型下载成功后会输出对应的配置信息,把配置信息保存下来,参考配置说明,加入到asrproxy.josn,后续可以再次执行下载脚本,得到配置信息。

下载PaddleSpeech TTS模型

  • 下载模型

    1. 下载 tts 模型 http://down.ddrj.com/paddlespeech_tts.zip

      wget http://down.ddrj.com/paddlespeech_tts.zip

    2. 解压到 /ddt/asrproxy/paddlespeech_tts

      unzip -d /ddt/asrproxy paddlespeech_tts.zip

    3. 解压后paddlespeech_tts的目录里面有2个文件夹和一个文件。
      dict
      weights
      front.conf

  • 参考下面的配置信息,修改asrproxy.json

{
"tts":{
"paddlespeech": {
"type": "paddlespeech",
"front_conf":"paddlespeech_tts/front.conf",
"am_model":"paddlespeech_tts/weights/fastspeech2_csmsc.onnx",
"voc_model":"paddlespeech_tts/weights/mb_melgan_csmsc.onnx",
"thread_num":1
}
}
"groups":{
"default":{
"mode":1,
"enable":[
"paddlespeech"
]
}
}
}

asrproxy.json配置说明

/*asrproxy启动不了,一般都是JSON格式不对,可以用 http://tools.jb51.net/code/jsonformat 这个工具检查JOSN是否存在错误。*/
{
"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":"127.0.0.1", //一句话识别监听的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配置
"asr":{

"listen_ip":"127.0.0.1", //外网访问要改成0.0.0.0
"listen_port":9988,
"storage":"record", //asr录音目录,调用asr时,设置了asr_params.recordfilename才会录音。
"acl":"*", //哪些IP可以访问,配置*任意IP都可以访问,多个IP用逗号隔开,如果不配置acl,通过127.0.0.1不需要配置在ACL里面也可以访问。

"interface": {
//FunASR实时识别热词模型
"paraformer_realtime_16K": {
"type": "funasr",
"engine": "2pass",
"quantize": true,
"enable_itn": true,
"itn-dir": "/ddt/asrproxy/funasr/fst_itn_zh",
"vad-dir": "/ddt/asrproxy/funasr/speech_fsmn_vad_zh-cn-16k-common-onnx",
"vad-quant": true,
"punc-dir": "/ddt/asrproxy/funasr/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727-onnx",
"model-dir": "/ddt/asrproxy/funasr/speech_paraformer-large-contextual_asr_nat-zh-cn-16k-common-vocab8404-onnx",
"online-model-dir": "/ddt/asrproxy/funasr/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-online-onnx",
"lm-dir": "/ddt/asrproxy/funasr/speech_ngram_lm_zh-cn-ai-wesp-fst",
"hotword": "",
"chunk-size": 800
},

//FunASR一句话识别热词模型
"paraformer_16K": {
"type": "funasr",
"engine": "sentence",
"quantize": true,
"enable_itn": true,
"itn-dir": "/ddt/asrproxy/funasr/fst_itn_zh",
"vad-dir": "/ddt/asrproxy/funasr/speech_fsmn_vad_zh-cn-16k-common-onnx",
"vad-quant": true,
"punc-dir": "/ddt/asrproxy/funasr/punc_ct-transformer_zh-cn-common-vocab272727-onnx",
"model-dir": "/ddt/asrproxy/funasr/speech_paraformer-large-contextual_asr_nat-zh-cn-16k-common-vocab8404-onnx",
"online-model-dir": "",
"lm-dir": "/ddt/asrproxy/funasr/speech_ngram_lm_zh-cn-ai-wesp-fst",
"hotword": ""
},


/*
"asr配置名字:新加ASR配置会自动生效(1分钟之内)": {
"说明": "已经存在的修改type,engine,appid,key,secret 不会生效,如果要修改这几个参数只能新添加一个ASR配置或者重启asrproxy程序,其他参数修改后自动生效"
}
*/
},
"groups":{
//默认使用的ASR
"default":{
"mode":0, //0:顺序使用,当使用数量等于count的时候切换下一个 1:循环使用
"enable": //启用的那些ASR配置
[
"paraformer_realtime_16K",
"其他要启用的ASR配置"
]
},


//自定义组,可以话术中指定使用那组ASR配置。
"custom":{
"mode":0,
"enable":[

]
},

//一句话识别和文件识别使用的ASR
"shortsentence":{
"mode":0,
"enable":[
"paraformer_16K"
]
}
}
},

//TTS配置
"tts":{
"disable_caching":false,//是否禁用缓存
"storage": "tts", //tts缓存目录
"append_silence": 20, //tts后的声音文件前后追加静音
"trim_threshold_volume": 50, //tts后的声音文件前后小于多少音量认为是静音去除
"listen_ip":"127.0.0.1",
"listen_port": 9989,
"bgtts_thread_count":10,

"interface":{
//飞桨TTS模型
"paddlespeech": {
"type": "paddlespeech",
"front_conf":"paddlespeech_tts/front.conf",
"am_model":"paddlespeech_tts/weights/fastspeech2_csmsc.onnx",
"voc_model":"paddlespeech_tts/weights/mb_melgan_csmsc.onnx",
"thread_num":1
}
},
"groups":{
"default":{
"mode":1,
"enable":[
"paddlespeech",
"其他要启用的TTS配置"
]
},

//自定义组,可以话术中指定使用那组TTS配置。
"custom":{
"mode":0,
"enable":[
]
}
}
}
}

FunASR配置

  • type asr类型必须是funasr
  • engine 引擎类型
    • 一句话识别 设置为 sentence
    • 实时识别
      • offline:关闭实时识别
      • online:开启实时识别
      • 2pass:混合2种模式,需要更多CPU。
  • enable_itn 是否启用数字转换成阿拉伯数字
  • itn-dir 数字模型目录
  • model-dir ASR一句话识别模型目录
  • online-model-dir ASR实时识别模型目录
  • punc-dir 标点模型目录
  • vad-dir vad模型目录
  • lm-dir 语言模型目录用于热词识别
  • chunk-size 实时识别多少数据提交一次
  • hotword 热词文件路径

阿里云ASR配置

/*阿里云实时语音识别配置例子 ,参数说明看 https://help.aliyun.com/document_detail/148847.html */
"aliyun_01": {
"count": 0, //最大多少并发
"fault_threshold": 0, //连续错误多少次停用
"fault_try_interval": 600, //停用多久后,从新尝试用这个KEY
"type": "aliyun", //识别引擎,通过配置指定调用的ASR类型
"engine": "transcriber", //transcriber:流接口,recognizer:一句话接口
"appid": "", //项目ID,详细看开通说明 https://help.aliyun.com/document_detail/71936.html
"key": "", //AccessKey ID 详细看 https://help.aliyun.com/document_detail/324194.html
"secret": "", //AccessKey Secret 详细看 https://help.aliyun.com/document_detail/69835.htm?spm=a2c4g.11186623.0.0.2f773f87BMksCK#section-iqi-ojp-tqk
"enable_intermediate_result": true, //设置是否返回中间识别结果
"enable_punctuation_prediction": false, //设置是否在后处理中添加标点
"enable_inverse_text_normalization": false, //设置是否在后处理中执行数字转换
"enable_semantic_sentence_detection": false, //设置是否使用语义断句。
"nlpmodel": "", //设置NLP模型名称,开启NLP服务后必填
"customizationid": "", //设置定制模型
"vocabularyid": "", //设置泛热词
"enable_ignore_sentencetimeout": true, //是否忽略实时识别中的单句识别超时, 默认是False
"disfluency": true, //是否对识别文本进行顺滑(去除语气词,重复说等), 默认是False
"speech_noise_threshold": 0.1, //噪音参数阈值,参数范围:[-1,1]取值越趋于-1:噪音被判定为语音的概率越大,取值越趋于+1:语音被判定为噪音的概率越大,该参数属高级参数, 调整需慎重并重点测试
"enable_sdk_log": false
},

/*阿里云一句话识别配置例子 ,参数说明看 https://help.aliyun.com/document_detail/148702.html*/
"aliyun_02": {
"count": 0,
"fault_threshold": 0,
"fault_try_interval": 600,
"type": "aliyun",
"engine": "recognizer", //transcriber:流接口,recognizer:一句话接口
"appid": "",
"key": "",
"secret": "",
"enable_intermediate_result": true,
"enable_punctuation_prediction": false,
"enable_inverse_text_normalization": false,
"enable_voice_detection": true //设置是否启动自定义静音检测
},
/*阿里云私有云asr配置例子*/
"aliyun_test": {
"count": 0,
"fault_threshold": 0,
"fault_try_interval": 600,
"type": "aliyun",
"engine": "transcriber", /*transcriber:流接口,recognizer:一句话接口 */
"appid": "default",
"key": "default",
"token": "default",
"url": "ws://ip:8101/ws/v1",
"secret": "default",
"enable_intermediate_result": true,
"enable_punctuation_prediction": false,
"enable_inverse_text_normalization": false,
"enable_semantic_sentence_detection": false
},

阿里云TTS配置

"aliyun":{
"count":0,
"fault_threshold":0,
"fault_try_interval":600,
"type":"aliyun",
"appid":"",
"key":"",
"secret":""
},

讯飞ASR配置

//讯飞语音听写接口,开通地址 https://www.xfyun.cn/services/voicedictation ,如果需要启用抢话功能,需要开通 "动态修正"
"xfyun_0": {
"count": 0,
"fault_threshold": 0,
"fault_try_interval": 600,
"connect_timeout":3000, //建立ws连接最大等待时间
"accent" : "mandarin", //方言,这几个参数的说明看接口文档 https://www.xfyun.cn/doc/asr/voicedictation/API.htm
"domain" : "iat", //应用领域
"language" : "zh_cn", //语种
"dwa" : "wpgs", //动态修正
"pd" : "", //领域个性化参数
"rlang" : "zh-cn", //繁体简体
"ptt" : 1, //是否开启标点符号添加
"nunum" : 1, //将返回结果的数字格式规则为阿拉伯数字格式
"type": "xfyun", //xfyun 标识这个配置试用讯飞云ASR引擎
"appid": "", //APPID
"key": "", //APIKey
"secret": "" //APISecret
},
//讯飞私有化ASR配置例子
"xfyun_1": {
"count": 0,
"fault_threshold": 0,
"fault_try_interval": 600,
"type": "xfyun",
"url": "ws://ip:1078/iat", //私有云地址,公有云默认地址ws://iat-api.xfyun.cn/v2/iat,可以不配置。
"appid": "",
"key": "",
"secret": ""
},

讯飞TTS配置

*/
//讯飞语音合成接口,开通地址 https://console.xfyun.cn/services/tts
"xfyun": {
"count": 0,
"fault_threshold": 0,
"fault_try_interval": 600,
"rdn": "0", //合成音频数字发音方式,参数说明 https://www.xfyun.cn/doc/tts/online_tts/API.html
"reg": "0", //设置英文发音方式:
"connect_timeout": 3000, //建立ws连接最大等待时间
"response_timeout": 60000, //等待tts返回的最大时间
"type": "xfyun", //xfyun 标识这个配置试用讯飞云ASR引擎
"appid": "", //APPID
"key": "", //APIKey
"secret": "" //APISecret
},

腾讯ASR配置

//实时语音识别(websocket)https://cloud.tencent.com/document/product/1093/48982
"tencent": {
"count": 0,
"fault_threshold": 0,
"fault_try_interval": 600,
"type": "tencent",
"engine": "8k_zh",
"appid": "",
"key": "",
"secret": ""
},

华为ASR配置

//获取取帐号名、帐号ID、用户名、用户ID、项目名称、项目ID 方法看这里 https://support.huaweicloud.com/api-iam/iam_17_0002.html 
//区域 列表 https://developer.huaweicloud.com/endpoint?IAM
//可用终端节点 https://support.huaweicloud.com/api-sis/sis_03_0004.html 写这个说明的时以下节点可用
//华北-北京一 cn-north-1, 华北-北京四 cn-north-4, 华东-上海一 cn-east-3
//账户信息 请看 https://support.huaweicloud.com/api-sis/sis_03_0058.html Token认证的描述
"huawei": {
"type": "huawei",
"projectname": "", //项目名字实际含义是项目节点 我的凭证处获取,如果没有项目先创建项目
"projectid": "", //项目ID 我的凭证处获取
"add_punc": true, //表示是否在识别结果中添加标点
"digit_norm": true, //表示是否将语音中的数字识别为阿拉伯数字
"interim_results": true, //是否输出中间结果
"vocabulary_id": "", //热词表id 创建方法看 https://support.huaweicloud.com/api-sis/sis_03_0071.html
"engine": "short-audio", //short-audio:一句话接口 https://support.huaweicloud.com/api-sis/sis_03_0095.html
"key": "", //Access Key Id 我的凭证(访问密钥)处创建
"secret": "" //Secret Access Key 创建访问密钥时下载获取
},

华为TTS配置

//华为语音合成 https://support.huaweicloud.com/api-sis/sis_03_0111.html
"huawei": {
"connect_timeout": 3000,
"response_timeout": 60000,
"type": "huawei",
"projectname": "", //项目名字实际含义是项目节点 我的凭证处获取,如果没有项目先创建项目
"projectid": "", //项目ID 我的凭证处获取
"key": "", //Access Key Id 我的凭证(访问密钥)处创建
"secret": "" //Secret Access Key 创建访问密钥时下载获取
},