hermes协议音频服务器部分的开源实现
hermes-audio-server的Python项目详细描述
爱马仕音频服务器
hermes audio server实现了由snips定义的hermes协议的音频服务器部分。
它是一个离线的、多语言的语音助手工具包,可以与家庭助手一起使用,并且是完全开源的。
使用Hermes Audio Server,您可以使用计算机的麦克风和扬声器(如覆盆子PI)作为Rhasspy系统的远程音频输入和输出。
系统要求
hermes音频服务器需要python 3。它已经在运行Raspbian9.8的Raspberry Pi和Ubuntu19.04的x86_64笔记本上进行了测试,但原则上它应该是跨平台的。当您遇到问题或软件退出时出现不支持您的平台的消息,请在github上打开一个问题。
安装
您可以安装Hermes Audio Server及其依赖项,如下所示:
sudo apt install portaudio19-dev sudo pip3 install hermes-audio-server
注意:这将在全球安装Hermes音频服务器。如果要在python虚拟环境中安装hermes音频服务器,请删除sudo
作为服务运行
您可以将Hermes Audio Server作为服务运行。
建议以系统用户身份运行。创建此用户时不需要登录shell,也不需要为用户创建主目录:
sudo useradd -r -s /bin/false hermes-audio-server
此用户还需要访问您的音频设备:
sudo usermod -a -G audio hermes-audio-server
配置
hermes audio server在json文件/etc/hermes audio server.json中配置,其格式如下:
{"site":"default","mqtt":{"host":"localhost","port":1883,"authentication":{"username":"foobar","password":"secretpassword"},"tls":{"ca_certificates":"","client_certificate":"","client_key":""}},"vad":{"mode":0,"silence":2,"status_messages":true}}
注意,这假设您正在使用authe连接到MQTT代理的标识和TLS,并启用实验性语音活动检测(请参见下文)。
配置文件中的所有键都是可选的。默认行为是在没有身份验证和TLS的情况下连接localhost:1883
,并使用default
作为站点ID并禁用语音活动检测。这种情况下的配置文件如下:
{"site":"default","mqtt":{"host":"localhost","port":1883}}
目前Hermes音频服务器使用系统默认的麦克风和扬声器。在未来的版本中,这将是可配置的。
语音活动检测
语音活动检测是hermes音频服务器的一项实验功能,默认情况下是禁用的。它基于py webrtcvad,并试图在没有语音时抑制发送音频帧。请注意,此尝试的成功与否在很大程度上取决于您的麦克风、环境和VAD功能的配置。hermes音频服务器中的语音活动检测不应视为隐私功能,而应视为节省网络带宽的功能。如果您确实不想在网络上发送音频帧(除了发出语音命令时),则应在设备上运行唤醒字服务,然后才开始将音频流传输到Rhasspy服务器,直到命令结束。
如果未在配置文件中指定VAD
键,则不会启用语音活动检测,所有录制的音频帧都将在网络上连续传输。如果不需要,请指定vad
键以仅在检测到语音活动时播放音频。您可以使用以下子键配置VAD功能:
模式
:应该是介于0和3之间的整数。0是过滤非语音的最不积极的,3是最积极的。默认为0。静音
:这定义了在Hermes Audio Recorder将其视为语音消息的结尾之前,在几秒钟内必须保持多少静音(未检测到语音)。默认为2。确保此值大于或等于rhasspy的命令侦听器的webrtcvad配置中的min\sec
会过早中止。状态信息
:这是一个布尔值:true
或false
。指定Hermes Audio Recorder在检测到语音消息的开始或结束时是否在MQTT上发送消息。默认为false
。当您想找到模式
和静音
的正确值时,这对于调试非常有用。
运行Hermes音频服务器
Hermes Audio Server由两个命令组成:Hermes Audio Player接收MQTT上的WAV文件并在扬声器上播放;Hermes Audio Recorder从麦克风记录WAV文件并在MQTT上作为音频帧发送。
您可以这样运行Hermes音频播放器:
hermes-audio-player
您可以这样运行Hermes录音机:
hermes-audio-recorder
如果您只想使用扬声器或麦克风,您可以同时运行两个或仅运行其中一个。
用法
这两个命令都知道--help
选项,该选项提供有关已识别选项的更多信息。例如:
usage: hermes-audio-player [-h][-v][-V][-c CONFIG] hermes-audio-player is an audio server implementing the playback part of the Hermes protocol. optional arguments: -h, --help show this help message and exit -v, --verbose use verbose output -V, --version print version information and exit -c CONFIG, --config CONFIG configuration file [default: /etc/hermes-audio- server.json] -d, --daemon run as daemon
已知问题/待办事项列表
- 您还不能选择音频设备:这些命令使用系统的默认麦克风和扬声器。
- 这个项目实际上是hermes协议中音频服务器部分的一个最小实现,打算与rhasspy一起使用。它不是snips音频服务器的替代品,因为它缺少wav帧中的附加元数据。
变更日志
- 0.2.0(2019-06-04):添加了日志记录和后台程序模式。
- 0.1.1(2019-05-30):当接收到错误的wav文件时,使音频播放器更加健壮。
- 0.1.0(2019-05-16):添加了语音活动检测选项。
- 0.0.2(2019-05-11):第一个公开版本。
其他有趣的项目
如果您觉得Hermes Audio Server有趣,也可以查看以下项目:
- rhasspy:一个脱机、多语言的语音助手工具包,可与家庭助手一起使用,完全开源。
- snips led控件:一种简单的方法来控制snips兼容设备的led,当检测到热词时,该设备正在听、说、空闲,…
- matrix-voice-esp32-mqtt-audio-streamer:相当于Hermes Audio Server的矩阵语音ESP32板,包括LED控制和OTA更新。
- opensnips:与snips语音平台相关的开源项目集合。
许可证
本项目由koen vervloesem提供,是一款具有麻省理工学院许可证的开源软件。有关详细信息,请参阅许可证文件。