『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 37267|回复: 32

[进阶教程] 黑群晖docker安装mpd并连接蓝牙音箱做TTS

  [复制链接]

9

主题

48

帖子

500

积分

超级版主

Rank: 8Rank: 8

积分
500
金钱
442
HASS币
0

教程狂人卓越贡献突出贡献

发表于 2017-6-5 22:20:23 | 显示全部楼层 |阅读模式
话题从上一个黑群晖接有线音响做TTS 开始.

首先回答上一篇帖子的一些问题
1. 一定要ssh登录并获得root权限. 这个方法可以网上搜一下, DSM5用root账号直接登录就可以, DSM6需要用管理员账号登录, 并执行sudo -i
2. 为什么不能用网页的docker创建container. 因为我们要挂载/dev下的设备文件, 这个网页端的docker是无法满足要求的. 所以需要用命令行这种稍微繁琐的方式进行.
3. 为什么经常无法发出声音. 这个可以看一下container的日志, 如果是提示类似乎设备无法打开的错误. 那一定是ALSA USB声卡设备号变了. 就是在mpd.conf配置里面device "hw:0,0"具体要查是那个hw号, 我用的方法是ipkg安装alsa-util完成的. 这样比较HACK, 我不太建议所有人都这样, 其实如果没有播放成功, 那么久从"hw:0,0"往后试一试"hw1:0" "hw2:0"这样没多少就能试出来了.


再说本帖
因为现在家里面大部分都有一两个蓝牙音箱, 摆脱有线的束缚, 使用蓝牙的方式来播放TTS应该是更完美的方案.

步骤:
1. 使用DSM的网页, 连接好蓝牙音箱, 并且用AudioStation播放, 选择输出源为蓝牙音箱, 测试蓝牙音箱连接成功.
2. 在用AudioStation播放的时候, ssh登录到群晖并获取root权限, 执行下面这条命令
ps -aux | grep Audio

可能会得到类似的输出
AudioSt+ 15552  0.8  0.1 624700  6852 ?        S<sl 21:30   0:19 /var/packages/AudioStation/target/sbin/synoaudiod
root     15593  0.0  0.1 241096  4428 ?        S<l  21:30   0:01 /var/packages/AudioStation/target/bin/pulseaudio --realtime=false
AudioSt+ 16045  0.2  0.0  37612  1396 ?        S<s  21:30   0:06 /var/packages/AudioStation/target/sbin/synorcd
AudioSt+ 29172  2.3  0.2 244940  7868 ?        S<sl 22:06   0:00 /var/packages/AudioStation/target/bin/mplayer -gapless-audio -ao pulse::bluez_sink.0C_A6_94_96_F3_7A -srate 44100 -channels 2 -format s16le -unique bluez_sink.0C_A6_94_96_F3_7A -daemon /volume1/music/赵骏 - 你就不要想起我 (Live) [mqms].mp3 -volume 14
AudioSt+ 29209  3.0  0.0      0     0 ?        Zs   22:06   0:00 [remote_player_s] <defunct>
root     29216  0.0  0.0  23120   972 pts/15   S+   22:06   0:00 grep --color=auto Audio

其中比较重要的就是bluez_sink.0C_A6_94_96_F3_7A. 这个就是我们蓝牙音箱的设备名字.
3. 同上一篇帖子一样, 创建mpd的路径和一些文件. 如果已经用有线音箱做过一遍, 用当时做好的就好.
4. 创建docker-compose.yml. 这里需要注意最后/tmp/pulse-PKdhtXMmr18n. 我还没有搞明白这个为什么名字是这样, 而且是否是我的机器特有的我也不是很明白, 所以我建议在实际操作的时候, 先确认一下自己机器/tmp/pulse-*是什么, 然后用本地的文件夹替换下面docker-compose.yml的最后一行的内容. 指令是
ls /tmp/pulse-*

mpd:
  image: schumyhao/mpd
  net: host
  privileged: true
  volumes:
    - /volume2/docker/mpd/mpd.conf:/etc/mpd.conf
    - /volume2/docker/mpd/music:/var/lib/mpd/music
    - /volume2/docker/mpd/playlists:/var/lib/mpd/playlists
    - ~/.pulse:/root/.pulse
    - /tmp/pulse-PKdhtXMmr18n:/tmp/pulse-PKdhtXMmr18n

5. 编辑mpd.conf文件. 其中audio_output的name可以自己起, sink是当时最开始用ps指令找到的蓝牙设备名字.
music_directory    "/var/lib/mpd/music"
playlist_directory "/var/lib/mpd/playlists"
db_file            "/var/lib/mpd/database"
log_file           "/var/lib/mpd/mpd.log"
pid_file           "/var/lib/mpd/mpd.pid"
state_file         "/var/lib/mpd/state"
sticker_file       "/var/lib/mpd/sticker.sql"
 
audio_output {
        type      "pulse"
        name     "Onyx Studio 2"
        sink        "bluez_sink.0C_A6_94_96_F3_7A"
}

6. 执行docker-compose up -d 启动container.
7. 配置HASS, 这个和上一篇帖子是一样的.
回复

使用道具 举报

175

主题

2956

帖子

7555

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7555
金钱
4574
HASS币
398

活跃会员教程狂人灌水之王

QQ
发表于 2020-10-6 18:21:31 | 显示全部楼层
我得机子也是 pulse-PKdhtXMmr18n  
回复

使用道具 举报

30

主题

999

帖子

4117

积分

论坛元老

Rank: 8Rank: 8

积分
4117
金钱
3113
HASS币
0

活跃会员

发表于 2017-6-5 22:24:44 来自手机 | 显示全部楼层
谢谢老妖大神!
回复

使用道具 举报

24

主题

604

帖子

3400

积分

元老级技术达人

积分
3400
金钱
2791
HASS币
0

卓越贡献

发表于 2017-6-5 22:30:59 | 显示全部楼层
先顶贴了!!多谢啊!!
回复

使用道具 举报

8

主题

219

帖子

3284

积分

论坛元老

Rank: 8Rank: 8

积分
3284
金钱
3065
HASS币
0
发表于 2017-6-6 00:15:02 | 显示全部楼层
谢谢分享,好东西啊!
回复

使用道具 举报

25

主题

688

帖子

3630

积分

论坛元老

Rank: 8Rank: 8

积分
3630
金钱
2937
HASS币
219

活跃会员

发表于 2017-6-6 08:41:41 | 显示全部楼层
要不要这么给力!
回复

使用道具 举报

8

主题

657

帖子

4185

积分

论坛元老

Rank: 8Rank: 8

积分
4185
金钱
3523
HASS币
0
QQ
发表于 2017-6-8 22:59:58 | 显示全部楼层

先顶贴了!!多谢啊!!
回复

使用道具 举报

25

主题

688

帖子

3630

积分

论坛元老

Rank: 8Rank: 8

积分
3630
金钱
2937
HASS币
219

活跃会员

发表于 2017-6-30 08:54:49 | 显示全部楼层
群晖重启后mpd就不能发声了,需要删除容器重新docker-compose up -d建立才行
回复

使用道具 举报

25

主题

688

帖子

3630

积分

论坛元老

Rank: 8Rank: 8

积分
3630
金钱
2937
HASS币
219

活跃会员

发表于 2017-7-4 16:17:11 | 显示全部楼层
今天家里又停电了
重启后错误代码如下:pulse_output: Failed to enable &quot;BTSpeaker&quot; [pulse]: pa_context_connect() has failed: Connection refused
回复

使用道具 举报

3

主题

222

帖子

3025

积分

元老级技术达人

积分
3025
金钱
2798
HASS币
10
发表于 2017-7-4 21:30:47 | 显示全部楼层
aktifin 发表于 2017-7-4 16:17
今天家里又停电了
重启后错误代码如下:pulse_output: Failed to enable &quot;BTSpeaker&quot; : pa_context_connect ...

同样问题
回复

使用道具 举报

0

主题

29

帖子

101

积分

注册会员

Rank: 2

积分
101
金钱
72
HASS币
0
发表于 2017-7-5 09:10:11 | 显示全部楼层
弱弱的问一句,黑裙不能直接插音响玩么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-23 17:08 , Processed in 0.063433 second(s), 37 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表