Als ich schließlich Amazon Echo kaufte und es ausprobierte, fühlte ich eine technologische Innovation. Immerhin sagte eine 28-jährige Tochter "Lass uns Alexa nehmen", ohne die Anweisungen zu lesen, und das Gespräch wurde hergestellt. Nun, ich möchte zwei kaufen, habe aber keine Einladung von Amazon erhalten. Ich habe einen Raspberry Pi zur Hand.
In einem solchen Fall gibt es eine Hand. Wie man Raspberry Pi in Amazon Echo verwandelt. Amazon vertreibt AVS (Amazon Voice Service) kostenlos an Entwickler, und Alexa (Stimme von Amazon Echo) ist darin enthalten. Ich möchte es irgendwie bewegen.
Von nun an werde ich die erforderliche Hardware zum niedrigstmöglichen Preis aus der Situation kaufen, dass nur Raspberry Pi 3B verfügbar ist, und versuchen, Alexa zu starten, das Echo entspricht.
Unten finden Sie einen Artikel über die Pioniere bei der Herstellung von Echo mit Raspberry Pi.
https://qiita.com/bwtakacy/items/32226ed2406b5ebe1984
Raspeye hat einen analogen Ausgang für den Lautsprecher, daher ist es ziemlich gut, daraus einen Ton zu erzeugen. (Apt-get install mpg321 um MP3 abzuspielen) Dieses Mal möchte ich etwas Ton über den drahtlosen Lautsprecher erzeugen. Andernfalls hören Sie Alexas Stimme oder Lied nicht. (Lied: http://www.itmedia.co.jp/news/articles/1712/19/news097.html)
Es scheint, dass es im Bad verwendet werden kann.
# sudo apt-get dist-upgrade
# sudo rpi-update
Es scheint, dass ein Daemon namens PulseAudio ausgeführt werden muss, um Geräusche vom Raspeltorte zu erzeugen.
sudo apt-get install pulseaudio pavucontrol
pulseaudio -D
Sie sollten jetzt zuerst den Ton vom Analogausgang hören. Zum Beispiel habe ich eine MP3-Datei zur Hand
mpg321 Chicken.mp3
In diesem Fall kann auch Zum Beispiel Chicken Attack gespielt werden.
Aktivieren Sie den drahtlosen Lautsprecher. Koppeln Sie zunächst als Bluetooth. Details werden im folgenden Artikel beschrieben.
https://qiita.com/Sam/items/5169d9f060aa31080b77
sudo apt-get install pi-bluetooth blueman pulseaudio-module-bluetooth
pi@raspberrypi:~ $ bluetoothctl
[bluetooth]# power on
Changing power on succeeded
[bluetooth]# agent on
Agent registered
[bluetooth]# scan on
Discovery started
[NEW] Device 30:21:18:71:23:51 Q50
[bluetooth]# pair 30:21:18:71:23:51
[CHG] Device 30:21:18:71:23:51 Paired: yes
Pairing successful
[bluetooth]# trust 30:21:18:71:23:51
[CHG] Device 30:21:18:71:23:51 Trusted: yes
[bluetooth]# connect 30:21:18:71:23:51
Attempting to connect to 30:21:18:71:23:51
[CHG] Device 30:21:18:71:23:51 Connected: yes
Connection successful
Der Dienst erstellt die folgende Datei und
[Unit]
Description=Pulse Audio
[Service]
Type=simple
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disable-shm
[Install]
WantedBy=multi-user.target
Starten Sie den Daemon mit dem folgenden Befehl und stellen Sie ihn so ein, dass er automatisch gestartet wird.
$ sudo systemctl start pulseaudio.service
$ sudo systemctl status pulseaudio.service
$ sudo systemctl enable pulseaudio.service
Gemäß dem folgenden Artikel muss Bluetooth als Ausgabeziel des pulseaudio-Daemons festgelegt werden.
http://zokibayashi.hatenablog.com/entry/2017/10/10/020902
Fügen Sie am Ende Folgendes hinzu.
/etc/pulse/system.pa
<Unterlassung>
### Automatically load driver modules for Bluetooth hardware
.ifexists module-bluetooth-policy.so
load-module module-bluetooth-policy
.endif
.ifexists module-bluetooth-discover.so
load-module module-bluetooth-discover
.endif
Legen Sie das Übertragungsziel in /etc/dbus-1/system.d/pulseaudio-bluetooth.conf fest. Bluez ist eine Implementierung des Bluetooth-Übertragungsprotokolls.
http://www.silex.jp/blog/wireless/2012/12/bluetooth4.html
/etc/dbus-1/system.d/pulseaudio-bluetooth.conf
<policy user="pulse">
<!--Kommentar hier raus
<allow own="org.pulseaudio.Server"/>
Ende des Kommentars raus-->
<allow send_destination="org.bluez"/>
</policy>
Starten Sie das System neu.
sudo reboot
Wenn kein Ton zu hören ist, haben Sie möglicherweise keinen Zugriff auf die Übertragung mit Impuls. Geben Sie unten Zugriffsrechte ein.
sudo usermod -a -G pulse-access,audio pi(Dies ist der Benutzername)
Später starte ich die Alexa-Sample-App, aber aus irgendeinem Grund wird nur Ton vom Analogausgang erzeugt. Aus diesem Grund habe ich mich aufgrund verschiedener Untersuchungen auf die Java-bezogene Einstellung beschränkt, dass der Sound nicht nur von der Java-Anwendung (anderer "mpg321" - und "aplay" -Sound) ertönt. Ich habe den folgenden Artikel gefunden und es geschafft, erfolgreich zu sein Ich fand heraus, wie man eine Stimme macht. https://stackoverflow.com/questions/45847635/java-audio-clip-cannot-be-closed-when-using-linux-pulseaudio
Es ist ein bisschen verwirrend, aber es scheint, dass Sie über die Route Alsa Userland → Pulse Audio → Bluetooth Speaker übertragen müssen.
Bearbeiten Sie dazu die folgende Datei mit sudo
und fügen Sie die folgenden 4 Zeilen hinzu.
/usr/lib/jvm/java-8-oracle/jre/lib/sound.properties
javax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider
javax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider
javax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider
javax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider
Jetzt, da der Lautsprecher Ton erzeugt, werde ich ein Mikrofon anbringen, damit es per Sprache gesteuert werden kann.
Recommended Posts