树莓派全双工语音(三)——Talkkonnect使用
前言
往期回顾:Mumble使用(二)——Mumble的自动化尝试
目前的主要任务,是实现mumble的自动化交互,尝试的范围是mumble及其生态圈中的第三方客户端。
由于mumble client使用图形化界面,自动化交互过程复杂而困难;gumble可能出现了兼容性问题,音频没有输入输出;pymumble的兼容性问题使其无法启动。因此,talkkonnect成为了新的尝试方向。
进展
1、已经成功编译并运行talkkonnect;
2、已经实现了树莓派端talkkonnect到Windows端mumble client的全双工语音。
具体情况
Talkkonnect简介
talkkonnect是mumble生态圈中第三方客户端的一员,基于go语言开发(go语言有点让人头疼),可在Raspberry Pi等linux平台上运行。
源码托管在github上:talkkonnect-github
安装好talkkonnect的镜像官网有提供:talkkonnect(当然不适用于我等开发人员)
talkkonnect的特性就不一一赘述了,关键的一点是:
它是由命令行启动和控制的(Headless),这对自动化交互非常有利,也降低了功耗。
图形化界面不但实现自动化交互十分困难,而且极大增加了树莓派的功耗,不利于项目要求的狭小环境和密封性(散热问题)。
Talkkonnect编译
go语言的开发环境配置这里就不赘述了,自己使用的go版本:go version go1.17 linux/arm
设置的路径是:
PATH=$PATH:/usr/local/go/bin
GOPATH=/home/pi/gocode
GOBIN=/home/pi/gocode/bin
配置mumble-server的本地服务器。
找到:
<serverandport>mumble.talkkonnect.com:64738</serverandport>
改为:
<serverandport>raspberrypi.local:64738</serverandport>
这样就可以连接到树莓派上的mumble-server了。
当然同理,也可以修改用户名和密码方便识别。
<username>talk-pi-b</username>
<password></password>
然后编译。
sudo su
cd /home/pi/gocode/src/github.com/talkkonnect/talkkonnect/cmd/talkkonnect
go build
就可以生成可执行文件了。
这里比较烦人的有两点:
1、talkkonnect的配置文件talkkonnect.xml中设置的路径都是绝对路径,除非你想完全按照README中的教程,把自己的用户名由pi改为talkkonnect(这样显得太蠢了),不然编译过程中会因为找不到路径而报错。
解决方法:进入talkkonnect.xml,全部替换,将home/talkkonnnect
改为home/pi
即可。类似这样:
2、go.mod
中的文件下载超时的问题。(谁让go是google开发的)
解决方法比较简单,设置代理:
go env -w GOPROXY=https://goproxy.cn,direct
这个就挺好用,再需要一点点运气(github不抽风),多试几次,mod就全部下载好了。
树莓派音频配置
有一说一,树莓派对音频的支持不算很友好,bcm2835这种只有输出没有输入的集成声卡使用起来非常麻烦,给音频设置带来了巨大的麻烦。alsa升级为PulseAudio的操作更是让一众开发者跟不上步伐。(全面支持PulseAudio的寥寥无几)
talkkonnect的建议是禁用默认声卡bcm2835,使用USB声卡进行音频的输入输出。
这里设置的步骤与README中有所不同。
1、禁用默认声卡。
sudo nano /boot/config.txt
找到:
#Enable audio (loads snd_bcm2835)
dtparam=audio=on
把dtparam=audio=on
注释掉就行,然后reboot
。
重启后cat /proc/asound/cards
,可以看到:
设置成功,编号为“1”。(不知道为什么,不是“0”)
2、设置USB声卡为默认声卡。
sudo nano /usr/share/alsa/alsa.conf
修改:
defaults.ctl.card 0
defaults.pcm.card 0
为:
defaults.ctl.card 1
defaults.pcm.card 1
然后reboot
,查看输出设备aplay -l
,查看输入设备arecord -l
:
设置成功。可以alsamixer
调节一下麦克风和耳机的音量。
talkkonnect运行
由于mumble-server开机自动运行,所以直接运行talkkonnect就可(不运行mumble-server则talkkonnect找不到服务器,程序终止):
sudo su
cd /home/pi/gocode/src/github.com/talkkonnect/talkkonnect/cmd/talkkonnect
./talkkonnect
成功运行了!!!(十分艰辛的调试以后。。。)
成功连接到服务器:
Windows端的mumble client加入会话。
1、talkkonnect显示加入:
2、mumble client显示加入:
talkkonnect端开启和关闭麦克风音频输入(虽然不太想要这个功能):
试听了一下,音质和延迟还不错。和树莓派(感觉这块树莓派的音频和兼容性有一些问题)使用mumble client的效果持平,甚至还要更好一点,可能是因为用USB声卡替代了默认声卡bcm2835。
下一步
1、实现talkkonnect的自动化交互,相比于图形化界面的自动化交互,这个任务感觉难度会降低许多。
2、默认运行talkkonnect时启动音频输入。现在需要按F8启动,比较鸡肋,要去掉这个功能。
3、在更复杂的音频环境下测试。目前使用的alsa与talkkonnect进行配合,同时使用USB声卡代替默认声卡,有限耳机和麦克风接入,运行较为稳定。尚未测试PulseAudio下使用默认声卡和蓝牙耳机是否能成功运行。(但成功的可能性不是很大,talkkonnect不适用默认声卡,也似乎不支持PulseAudio)
加更(1)——音频自动输入
原来启动talkkonnect后需要按F8来启动麦克风输入,现在可以随着talkkonnect的启动而自动输入音频了。
找到文件client.go
,在
b.Connect()
pstream = gumbleffmpeg.New(b.Client, gumbleffmpeg.SourceFile(""), 0)
下面插入:
time.Sleep(200 * time.Millisecond)
b.cmdStartTransmitting()
重新编译,OK,解决问题。
加更(2)——自启
万事俱备,只欠自启。
启动客户端后,自动连接mumble-server,自动验证证书,自动开启音频的输入输出。。。这一系列工作都已经完成了。(经过了令人恼火的反复尝试之后)
现在只需要设置talkkonnect这个可执行文件能够在树莓派开机时自启就可以了。需要满足的要求也比较简单:在硬件驱动、mumble-server之后启动就可以了。(不然会因为找不到设备或者服务器而报错)因此,自启的优先级需要低一点。
尝试的方法有:
1、在systemd中添加service来自启。失败,可能是因为优先级的问题;
2、按照README的提示,编写一个运行talkkonnect脚本,使用screen命令,在rc.local
中运行。失败,原因不明。
3、使用desktop开机自启动。与无外接显示器的需求有冲突,不是最优解,放弃。
4、编写一个运行talkkonnect脚本,使用su pi -c "exec /home/pi/test-tk.sh"
执行,在rc.local
中运行。失败,可能是因为线程的冲突。
。。。
各种各样的方法都尝试一番后,终于找到有效的了:
编辑rc.local
文件:
sudo nano /etc/rc.local
添加:
screen -dmS tk /home/pi/my_path_tk/talkkonnect &
这个简单直接的方法居然成功了,迷惑。
自启成功(‐^▽^‐)
自动化交互的任务基本完成了。
完结撒花 \ (•◡•) /
树莓派全双工语音(三)——Talkkonnect使用相关推荐
- 树莓派全双工语音(二)——Mumble的自动化交互
对象与总体进展 尝试对象 根据mumble以及其提供的第三方应用mumble-3rd party application,逐个进行尝试. 1.Mumble client 目前不支持生成命令行界面,需要 ...
- 微软小冰:全双工语音对话详解
讲师 | 周力 来源 | AI科技大本营在线公开课 微软小冰第六代发布会上正式宣布上线全新的共感模型,同时也开始公测一种融合了文本.全双工语音与实时视觉的新感官.这项新技术可以实时预测人类即将说出的内 ...
- 树莓派全语音控制媒体播放器(Fully Speech-Controlled Media Player)
树莓派全语音控制媒体播放器(Fully Speech-Controlled Media Player) 主要特点: *全程无外设操作,可以在无鼠标键盘显示器等外设的情况下(Headless),完全通过 ...
- 今晚8点直播 | 详解微软小冰全双工语音对话技术
微软小冰第六代发布会上正式宣布上线全新的共感模型,同时也开始公测一种融合了文本.全双工语音与实时视觉的新感官.这项新技术可以实时预测人类即将说出的内容,实时生成回应,并控制对话节奏,从而使长程语音交互 ...
- 免费报名 | 微软全双工语音对话以及在智能硬件上的应用
微软小冰第六代发布会上正式宣布上线全新的共感模型,同时也开始公测一种融合了文本.全双工语音与实时视觉的新感官.这项新技术可以实时预测人类即将说出的内容,实时生成回应,并控制对话节奏,从而使长程语音交互 ...
- 树莓派学习(三):安装pytorch并验证
树莓派学习(三):安装pytorch并验证标题 步骤一:创建一个虚拟环境 步骤二:安装pythorch 步骤三:测试 彩蛋 步骤一:创建一个虚拟环境 conda create --name pytor ...
- 树莓派笔记(三) 使用 RPi.GPIO 模块
目录 树莓派笔记(三) 使用 RPi.GPIO 模块 RPi.GPIO 引脚简介 引脚编号 引脚图 引脚设置 指定引脚编号系统 配置通道 释放引脚 输出 pwm 输入 上拉/下拉电阻 轮询输入 中断和 ...
- DIY树莓派小车(三)外壳设计和Web控制 完结
DIY树莓派小车(三)外壳设计和Web控制 完结 外壳 之前没学习过CAD,所以在这里我使用的建模工具是Tinkercad(一个基于浏览器的3D设计和建模程序),学习成本极低,可快速上手 导出图纸,淘 ...
- 树莓派slam_SLAM+语音机器人DIY系列:(五)树莓派3开发环境搭建——6.树莓派USB与tty串口号绑定...
摘要 通过前面一系列的铺垫,相信大家对整个miiboo机器人的DIY有了一个清晰整体的认识.接下来就正式进入机器人大脑(嵌入式主板:树莓派3)的开发.本章将从树莓派3的开发环境搭建入手,为后续ros开 ...
最新文章
- [CLR via C#]12. 泛型
- Mysql的drop/truncate/delete
- [BUUCTF-pwn]——others_shellcode
- MySQL基本操作命令和数据表高级操作
- Linux程序选择boy糊者girl,linux脚本程序练习-Go语言中文社区
- 公平锁非公平锁和可重入锁(递归锁)
- POJ 2960 博弈论
- 【httpClient】Timeout waiting for connection from pool
- c语言链表末尾怎么插入数据,在链表中插入数据!求助!!!
- azure云服务器搭建连接_如何创建到Azure SQL数据库的链接服务器
- java web初始化实例_Struts2中实现web应用的初始化实例详解
- 理解Netty中的Zero-copy
- xp java环境_XP系统怎么安装JAVA编程环境
- 两种方式,实现 SpringBoot 中数据库密码加密
- CentOS 8 修改DNS地址
- 盘点 6 个开源的音乐播放器!
- MEncoder的基础用法—6.5. 编码为MPEG格式
- HarmonyOS助力构建“食用菌智慧农场”
- python打开方式包括_运行Python程序有两种方式:________和________。
- Latex将文中的某一行设置成左对齐、右对齐