前言

往期回顾: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使用相关推荐

  1. 树莓派全双工语音(二)——Mumble的自动化交互

    对象与总体进展 尝试对象 根据mumble以及其提供的第三方应用mumble-3rd party application,逐个进行尝试. 1.Mumble client 目前不支持生成命令行界面,需要 ...

  2. 微软小冰:全双工语音对话详解

    讲师 | 周力 来源 | AI科技大本营在线公开课 微软小冰第六代发布会上正式宣布上线全新的共感模型,同时也开始公测一种融合了文本.全双工语音与实时视觉的新感官.这项新技术可以实时预测人类即将说出的内 ...

  3. 树莓派全语音控制媒体播放器(Fully Speech-Controlled Media Player)

    树莓派全语音控制媒体播放器(Fully Speech-Controlled Media Player) 主要特点: *全程无外设操作,可以在无鼠标键盘显示器等外设的情况下(Headless),完全通过 ...

  4. 今晚8点直播 | 详解微软小冰全双工语音对话技术

    微软小冰第六代发布会上正式宣布上线全新的共感模型,同时也开始公测一种融合了文本.全双工语音与实时视觉的新感官.这项新技术可以实时预测人类即将说出的内容,实时生成回应,并控制对话节奏,从而使长程语音交互 ...

  5. 免费报名 | 微软全双工语音对话以及在智能硬件上的应用

    微软小冰第六代发布会上正式宣布上线全新的共感模型,同时也开始公测一种融合了文本.全双工语音与实时视觉的新感官.这项新技术可以实时预测人类即将说出的内容,实时生成回应,并控制对话节奏,从而使长程语音交互 ...

  6. 树莓派学习(三):安装pytorch并验证

    树莓派学习(三):安装pytorch并验证标题 步骤一:创建一个虚拟环境 步骤二:安装pythorch 步骤三:测试 彩蛋 步骤一:创建一个虚拟环境 conda create --name pytor ...

  7. 树莓派笔记(三) 使用 RPi.GPIO 模块

    目录 树莓派笔记(三) 使用 RPi.GPIO 模块 RPi.GPIO 引脚简介 引脚编号 引脚图 引脚设置 指定引脚编号系统 配置通道 释放引脚 输出 pwm 输入 上拉/下拉电阻 轮询输入 中断和 ...

  8. DIY树莓派小车(三)外壳设计和Web控制 完结

    DIY树莓派小车(三)外壳设计和Web控制 完结 外壳 之前没学习过CAD,所以在这里我使用的建模工具是Tinkercad(一个基于浏览器的3D设计和建模程序),学习成本极低,可快速上手 导出图纸,淘 ...

  9. 树莓派slam_SLAM+语音机器人DIY系列:(五)树莓派3开发环境搭建——6.树莓派USB与tty串口号绑定...

    摘要 通过前面一系列的铺垫,相信大家对整个miiboo机器人的DIY有了一个清晰整体的认识.接下来就正式进入机器人大脑(嵌入式主板:树莓派3)的开发.本章将从树莓派3的开发环境搭建入手,为后续ros开 ...

最新文章

  1. [CLR via C#]12. 泛型
  2. Mysql的drop/truncate/delete
  3. [BUUCTF-pwn]——others_shellcode
  4. MySQL基本操作命令和数据表高级操作
  5. Linux程序选择boy糊者girl,linux脚本程序练习-Go语言中文社区
  6. 公平锁非公平锁和可重入锁(递归锁)
  7. POJ 2960 博弈论
  8. 【httpClient】Timeout waiting for connection from pool
  9. c语言链表末尾怎么插入数据,在链表中插入数据!求助!!!
  10. azure云服务器搭建连接_如何创建到Azure SQL数据库的链接服务器
  11. java web初始化实例_Struts2中实现web应用的初始化实例详解
  12. 理解Netty中的Zero-copy
  13. xp java环境_XP系统怎么安装JAVA编程环境
  14. 两种方式,实现 SpringBoot 中数据库密码加密
  15. CentOS 8 修改DNS地址
  16. 盘点 6 个开源的音乐播放器!
  17. MEncoder的基础用法—6.5. 编码为MPEG格式
  18. HarmonyOS助力构建“食用菌智慧农场”
  19. python打开方式包括_运行Python程序有两种方式:________和________。
  20. Latex将文中的某一行设置成左对齐、右对齐

热门文章

  1. 【计算机科学理论】 2019年-中国计算机学会推荐国际学术会议和期刊目录(六)
  2. Ubuntu18.04 安装微信
  3. karaf maven
  4. 论文:Keyword Spotting Based On CTC and RNN For Mandarin Chinese Speech
  5. java生成数字证书_java生成数字证书方法
  6. 中国商飞公司信息化计划处处长李云峰:企业数字化变革
  7. 原生JS 获取浏览器类型-2022新版
  8. 2020Java书单推荐
  9. 乘基取整法是什么_进制_深入理解
  10. 概率论:条件概率与独立性