FreeSWITCH及VOIP,Openser,电话机器人等产品中文技术资讯、交流、沟通、培训、咨询、服务一体化网络。QQ群:293697898
注意,本次应用的能力为半实时,即不是每个语音包流都要送往识别,而是VAD后才送,识别后通过ESL发送消息后进行处理,用于座席辅助或半实时质检均可。部署方式为:云主机、物理机、测试型的内部虚拟机均可。识别特性:座席助手,或当检测到有异常,实时挂机。可使用开源ASR模型降低识别成本。
以前我们做项目过程中,面向座席助手和实时质检(当然大部分知识库都是甲方的,所以我们以前是不做知识库的)时,做了面向讯飞sdk、阿里sdk、百度sdk、大部分的restful api的。然后因为业务需求各不一样,有一些同样的asr,还做了不同的业务适配。
最近整理出一个版本,使用宁卫的交互协议,funasr以及modelscope开源产品的ASR,通过宁卫mod_dsr实现通话过程中内容断句后,再送去识别,并实时展现出来,如果遇到对应的禁忌词汇需要挂机,那么配置好是挂机,就会把通话给挂断。
同样为了批量处理相关的词汇,我们实现了一个后端的命令,叫auto_add_words.
在keywords.ini中将相关的禁忌词配置好,以“,”为分隔符,那么就能批量去重导入。然后手工在web管理中将哪些禁忌词设为挂机,不挂机则不用改,这样就配置好了禁忌词,这些词汇支持RE2正则表达式。
具体操作如下:
操作系统的安装为 CentOS 7.9
这里可能需要注意一下,我们的funasr是在ubuntu20.04或debian 11上,不确定centos 7.9能满足其必须运行环境。
如果是不能安装docker和python3.10及以上,有可能您得备两台机,一台是CentOS7.9,另一台为Debian 11
预安装的软件及包
yum -y install epel-release yum install -y https://files.freeswitch.org/repo/yum/centos-release/freeswitch-release-repo-0-1.noarch.rpm epel-release
yum install -y yum-plugin-ovl centos-release-scl rpmdevtools yum-utils git yum install -y devtoolset-4-gcc*
yum install -y git subversion autoconf automake libtool gcc-c++ ncurses-devel make wget centos-release-scl-rh
yum -y install expat-devel openssl-devel libtiff-devel libX11-devel unixODBC-devel libssl-devel python-devel
yum -y install zlib-devel libzrtpcpp-devel alsa-lib-devel libogg-devel libvorbis-devel perl-libs gdbm-devel
yum -y install libdb-devel uuid-devel @development-tools patch
yum -y install ldns-devel libidn-devel unbound-devel
yum -y install libjpeg-devel sqlite-devel libcurl-devel
yum -y install pcre-devel libuuid-devel bison-devel bison
yum -y install speex-devel libtheora-devel yasm nasm libedit-devel libicu
yum install libsndfile-devel.x86_64 cmake -y
yum install opus-devel.x86_64 opusfile-devel.x86_64 -y
yum install lame-devel.x86_64 lame-libs.x86_64 lame.x86_64 lame-mp3x.x86_64 -y
yum install mariadb-devel.x86_64 mariadb-libs.x86_64 lynx libxslt.x86_64 -y
yum install lua.x86_64 tolua++-devel.x86_64 lua-expat.x86_64 -y
yum install redis jemalloc -y 3. 安装PostgreSQL 12
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum install -y postgresql12-server postgresql-client postgresql-contrib postgresql-devel
/usr/pgsql-12/bin/postgresql-12-setup initdb
systemctl enable postgresql-12
systemctl start postgresql-12
上传 freeswitch.tgz /usr/local后 ,/usr/local# tar zxvf freeswitch,注意:如果/usr/local下没有freeswitch目录,则有可能是需要 /usr/local# mv usr/local/freeswitch .
上传 nwaydsr.tgz 到/opt后, /opt#tar zxvf nwaydsr.tgz后/opt# ll nway_dsr
需要看到 nway_dsr nway_asr 等
上传 nway_funasr_service.tag 到/opt后,同上。
导入数据库
/sbin/chkconfig postgresql on
su - postgres -c "psql -c \"create database nwaydsr;\""
su - postgres -c "pg_restore -d nwaydsr -v '/opt/nway_dsr/database/nwaydsr.sql'"
sed -i '82 s/ident/md5/g' /db/data/pg_hba.conf
su - postgres -c "psql -U postgres -d postgres -c \"alter user postgres with password 'Nway2017';\""
service postgresql restart
这里要注意下,不同版本的postgresql,服务的名称可能不一样,如postgresql-12 postgresql_12等,请自行查阅它的服务名。不同的postgresql安装的路径不同,以上的pg_hba.conf请通过find查询文件所在位置。当配置好了后应是可以看到
psql -U postgres -h 127.0.0.1
进入了psql命令行后 \l 能看到nwaydsr数据库且\c nwaydsr 后\dt 能看到相关表。
安装funasr
curl -O https://raw.githubusercontent.com/alibaba-damo-academy/FunASR/main/funasr/runtime/deploy_tools/funasr-runtime-deploy-offline-cpu-zh.sh;
注:如果需要部署时间戳模型或者热词模型,在安装部署步骤2时选择对应模型,其中1为paraformer-large模型,2为paraformer-large 时间戳模型,3为paraformer-large 热词模型
客户端测试与使用
运行上面安装指令后,会在/root/funasr-runtime-resources(默认安装目录)中下载客户端测试工具目录samples(手动下载,点击此处), 我们以Python语言客户端为例,进行说明,支持多种音频格式输入(.wav, .pcm, .mp3等),也支持视频输入(.mp4等),以及多文件列表wav.scp输入,其
./funasr-wss-client --server-ip 127.0.0.1 --port 10095 --wav-path ../audio/asr_example.wav
a. ln -sf /usr/local/freeswitch/bin/freeswitch /usr/bin/.
b. ln -sf /usr/local/freeswitch/bin/fs_cli /usr/bin/.
c. 如果数据库不本机或密码修改过就改动/usr/local/freeswitch/conf/autoload_configs/cdr_pg_csv.conf.xml和/opt/nway_dsr/Nway.conf及/opt/nway_dsr/web/conf/app.conf
d. 如果funasr不在本机,需vim /opt/nway_dsr/nway.com.cn.conf中的ip和端口,然后 ./nway_asr "" filename
e. 配置路由,如
<extension>
<condition field="destination_number" expression="^(85733505)$">
<action application="export" data="exten_record_file=$${recordings_dir}/${strftime(%Y-%m-%d)}/${caller_id_number}.$1.${strftime(%H-%M-%S)}.${uuid}.wav"></action>
<!-- <action application="set" data="execute_on_answer='dsr ${exten_record_file}'"></action> -->
<action application="set" data="record_file=${exten_record_file}"></action>
<action application="log" data="CRIT ${exten_record_file}"></action>
<action application="set" data="hangup_after_bridge=true"></action>
<action application="export" data="sip_auto_answer=true"></action>
<action application="bridge" data="{execute_on_answer='dsr ${record_file}'}user/1000"></action>
</condition>
</extension>
如需配外线,则自行处理下sip_profiles/internal.xml和external.xml中的ext-sip-ip和ext-rtp-ip
f. freeswitch -nc启动 freeswitch
g. cd /opt/nway_dsr && nohup ./nway_dsr &
h. cd /opt/nway_dsr/web && nohup ./dsr_web &
那么理论上,我们在进行通话时,在对应主机的8098端口上就可以看到实时通话的内容了。
访问方式:http://ip:8098 , admin 123456
dsr模块授权位置于/opt/dsr/license.txt
funasr服务授权位置于 nway_funasr_server所在位置下的 asr_lic.txt
如有问题,需要查看的服务 postmaster监听 5432 ;freeswitch 监听 8021; nway_dsr 连接 5432和 8021;dsr_web 监听8098
**以上服务,含funasr(如果因为funasr直接限制使用,那么我们配合大家使用其它的asr方式,或直接大家用自己的阿里asr一句话识别,由宁卫提供对应的客户端)即日起至2023.12.10日,且通过/opt/nway_dsr/nway_machine_id获取的机器码于2024年1月1日前通过发邮件至 lihao@nway.com.cn 或加微信 18621575908 记录一下,前30名免费使用本系统两年。
此处服务仅限授权使用并能正常运行,不包含日常运维,请谅解!
此处服务限本次版本,不配合使用方改进相关功能性的问题,但可以配合修正现有版本的bug!
此处服务不限登记者的使用方式,但不为相关使用负责。
如有其它未尽事宜,以我们的解释为准。**