Raspberry Pi での音源切り替え
usb-audioなどを(挿し)追加して、内臓音源との切り替えがようやく判明。
- 準備
$ sudo jed /etc/modprobe.d/alsa-base.conf
options snd-usb-audio index=0
とすると、usb-audio アダプターを挿してrebootすると、defaultが0となる。
確認方法は
$ aplay -l
**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: U0x41e0x30d3 [USB Device 0x41e:0x30d3], デバイス 0: USB Audio [USB Audio]
カード 1: ALSA [bcm2835 ALSA], デバイス 0: bcm2835 ALSA [bcm2835 ALSA]
- OpenJTalk の場合
$ jsay 文字列 で喋ってくれるが、音源を内蔵のbcm2835からusb-audioにするには、
jsay(スクリプト)の一部を変更する。
#!/bin/sh
TMP=/tmp/jsay.wav
#cd /usr/share/hts-voice/nitech-jp-atr503-m001
cd /usr/share/hts-voice/mei_happy
echo "$1" | open_jtalk \
-td tree-dur.inf \
-tf tree-lf0.inf \
-tm tree-mgc.inf \
-md dur.pdf \
-mf lf0.pdf \
-mm mgc.pdf \
-dm mgc.win1 \
-dm mgc.win2 \
-dm mgc.win3 \
-df lf0.win1 \
-df lf0.win2 \
-df lf0.win3 \
-dl lpf.win1 \
-ef tree-gv-lf0.inf \
-em tree-gv-mgc.inf \
-cf gv-lf0.pdf \
-cm gv-mgc.pdf \
-k gv-switch.inf \
-s 16000 \
-a 0.05 \
-u 0.0 \
-jm 1.0 \
-jf 1.0 \
-jl 1.0 \
-x /var/lib/mecab/dic/open-jtalk/naist-jdic \
-ow $TMP && \
aplay -D plughw:0,0 -q $TMP ← 内臓にするには1,0に。
rm -f $TMP
- 音源のコントロール*1
直接 alsamixer を実行して音量等を変化させてもよいが、以下のようにコマンドで変更できる。
pi@raspberrypi ~ $ amixer -c 0 ← #0の音源の状態を表示させる。
Simple mixer control 'Speaker',0 ←のアポストロフィー"'"で囲まれた文字がコントロール項目で、コマンドで値を設定することができる。
Capabilities: pvolume pswitch pswitch-joined penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 151
Mono:
Front Left: Playback 46 [30%] [-19.75dB] [on]
Front Right: Playback 46 [30%] [-19.75dB] [on]
Simple mixer control 'Mic',0
Capabilities: pvolume pvolume-joined cvolume cvolume-joined pswitch pswitch-joined cswitch cswitch-joined penum
Playback channels: Mono
Capture channels: Mono
Limits: Playback 0 - 32 Capture 0 - 16
Mono: Playback 12 [38%] [17.92dB] [off] Capture 0 [0%] [0.00dB] [on]
Simple mixer control 'Auto Gain Control',0
Capabilities: pswitch pswitch-joined penum
Playback channels: Mono
Mono: Playback [on]
【書式】値をセットする書式は
$ amixer (-c [カード番号]) set [コントロール] [値]
上記の場合を例にすると
$ amixer -c 0 set Speaker 50%
以下工事中