对象与总体进展

尝试对象

根据mumble以及其提供的第三方应用mumble-3rd party application,逐个进行尝试。

1、Mumble client

目前不支持生成命令行界面,需要虚拟化桌面xvfb和GUI自动操作程序的支持。

2、Gumble

可以正常启动并连接服务器,由于兼容性或者配置的原因,没有音频的输入输出。如果这个问题得以解决,实现自动化较为简单。

3、Barnard

gumble的命令行版本,依赖于gumble。所以gumble的问题不解决,barnard也无法正常使用。

4、Pymumble

由于兼容性问题,无法正常使用。

5、talKKonnect

官网只提供了能直接烧录在树莓派上的镜像。GitHub上有源码,正在尝试中。

Mumble client

首先想到了直接对mumble client进行自动化。考虑到mumble client使用图形界面(GUI),实现自动化的难度较大,希望通过修改源码的方式,将mumble改造成使用命令行来控制的版本(Headless),再通过编写脚本执行来实现自动化。
因此与mumble的开发人员进行了简单的沟通,探讨可行性。

mumble-voip-issues#5236

遗憾的是,开发人员说,目前mumble尚不支持这样的功能,并且在短期内也不会进行开发。


他们让我尝试从mumble-voip-issues#3877中得到一些提示。这里提到的主要是QT的offscreen和虚拟化桌面xvfb的使用。

解决方案

1、使用虚拟化桌面xvfb代替显示器;
2、使用GUI自动操作程序dogtail等,完成对mumble的自动化操作。

困难

1、GUI自动操作程序一般是针对Web程序,比如谷歌、火狐等浏览器开发的,可能不适用于mumble client。
2、树莓派使用的系统和图形化界面相比一般的Linux比较特殊,属于深度定制的版本,目前尝试的一种GUI自动操作程序不能在树莓派上使用,有待更多的尝试。

Gumble

gumble安装

首先安装Go语言。sudo apt-get install golang
切换到相对应的目录,发现../go/src/下缺少很多安装必要的库,根据报错信息一个一个下载。。。漫长并且痛苦的过程,几kb的下载速度,浪费了几个小时,终于找齐了,不报错了。

cd ../go/src/layeh.com/gumble/cmd/mumble-ping
go install
cd ../go/src/layeh.com/gumble/_examples/mumble-audio-player
go install

../go/bin下生成了mumble-ping和mumble-audio-player两个可执行文件,其中:
mumble-ping用来显示现有的mumble-server信息;
mumble-audio-player是一个demo,用来测试能否顺利连接mumble-server,并且音频输入输出政策。

gumble调试

1、启动mumble-audio-player,出现问题:

x509: certificate is not valid for any names, but wanted to match localhost

在gumble-issues-4中,发现这是由于gumble需要证书验证,所幸开发者提供了跳过证书验证的选项:--insecure,问题解决。
2、根据gumble (docs),目前gumble只支持opus来进行音频的发送和接收,并且需要更改mumble-server的配置文件opusthreshold=0
3、启动与连接。

cd  ../go/bin
./mumble-audio-player

成功启动客户端,并连接了mumble-server服务器。图中的gumble-client就是gumble的客户端。

问题

目前gumble的音频还没有输入和输出,尚不清楚这是由于没设置好,还是gumble不支持树莓派4B音频的原因。有待进一步的测试,目前正在努力。

困难

1、gumble的开发者早在2020年8月就停止了项目的更新,目前项目无人维护和支持,我在2021年8月23日提出了问题gumble-issues-57,但到目前为止无人解答,得到解答的期望也比较低。
2、gumble的开发时间早于树莓派更换新的音频处理模块的时间。

raspberry Pi release note

可以看到,音频模块和蓝牙模块自version-2020-12-02以来,都是由PulseAudio提供支持,原有的alsa及其第三方库被移除。
而gumble中没有明确说明支持PulseAudio,因此在树莓派4B上的兼容性很可能有问题。

Barnard

是由同一人(Tim Cooper)开发的,基于gumble的命令行版本。
安装过程与gumble相同,大多数库依赖于gumble,由于gumble没有音频输入输出,barnard也无法使用。

Pymumble

目前pymumble API这个库可以安装成功,但demo程序audio-only_client.py无法成功运行,大量报错。

并且出现alsa lib,和bluealsa找不到的问题,而已知的,bluealsa这个第三方库已经被树莓派移除了。

所以猜测是兼容性问题。因此,pymumble也无法正常使用。

仍在尝试中。。。

树莓派全双工语音(二)——Mumble的自动化交互相关推荐

  1. 树莓派全双工语音(三)——Talkkonnect使用

    前言 往期回顾:Mumble使用(二)--Mumble的自动化尝试 目前的主要任务,是实现mumble的自动化交互,尝试的范围是mumble及其生态圈中的第三方客户端. 由于mumble client ...

  2. shell脚本详解(十二)——Here Document免交互及Expect自动化交互

    shell脚本详解(十二)--Here Document免交互及Expect自动化交互 一.Here Document 免交互 1.格式 2.注意事项 3.免交互方式实现对行数的统计,将要统计的内容置 ...

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

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

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

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

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

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

  6. OpenCV开发笔记(二):cvui交互界面

    若该文为原创文章,未经允许不得转载 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/100110016 各位读者,知识无穷而人力有穷, ...

  7. Ubuntu16.04利用expect模拟键盘输入实现自动化交互

    在Linux的日常使用中,经常会有自动化交互的需要,如SSH,手动的操作繁琐.效率地下,使用expect工具可以模拟键盘输入,实现自动输入.自动交互. 1,安装  sudo apt install e ...

  8. pythonsocket自动化教程_python---socket自动化交互

    socket 的自动化交互 假设服务端运行程序为: # coding:utf8 # python3 import random import socket import sys # 创建 socket ...

  9. linux 自动化交互套件 expect 介绍 shell非交互

    expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信. expect自动交互流程: spawn启动指定进程---expect获取指定关键字--- ...

最新文章

  1. 泛珠三角计算机作品大赛2018,2018年泛珠三角大学生计算机作品赛广西赛区选拔赛圆满结束...
  2. 使用bootstrap-table等自动使用ajax地址载入数据的插件的数据设计建议
  3. Leaflet中使用Leaflet-MiniMap插件实现小地图效果
  4. 伪原创工具安全第一嘛~~
  5. OpenCV3学习(12.2) 目标跟踪之运动模板法segmentMotion实现(Mat版本)
  6. 在列表中根据条件来筛选数据
  7. C#中(int),int.Parse,int.TryParse,Convert.ToInt32四则之间的用法
  8. 3G手机Android应用开发视频教程_黎活明老师的视频(第三天课程)总共有八天课程...
  9. java过滤集合数量,java – 使用lambdaj过滤集合
  10. erp服务器维护数据备份,erp服务器备份
  11. nova创建虚拟机源码分析系列之六 api入口create方法
  12. PN512使用的一些小技巧
  13. vue3.0中使用百度离线地图
  14. PowerPoint放映时的动画怎么取消?
  15. BGP 自动路由聚合
  16. 龙卷风收音机android安卓版,龙卷风收音机安卓版
  17. 英语翻译作业(十二)
  18. 最新款iPad,真香!!
  19. nagios监控数据库错误
  20. RRD_rrdtool的介绍和使用

热门文章

  1. motan源码分析六:客户端与服务器的通信层分析
  2. 相对定位绝对定位固定定位元素的层级
  3. 给 dom 元素添加 onresize 功能
  4. 用Java语言计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
  5. RobotFramework(一)基本介绍
  6. conda切换清华源
  7. Revit 二次开发—获取Revit安装目录
  8. Activity生命周期管理
  9. 23 种设计模式详解
  10. 地铁换乘 java_java实现乘地铁方案的最优选择(票价,距离)