[JAVA] Erstellen Sie Amazon Alexa kostengünstig mit dem Raspberry Pi 3B + Bluetooth-Lautsprecher (1. Machen Sie zuerst einen Sound)

Großartiger Zweck

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

Dieses Kapitel: Erstens ertönt der Lautsprecher nicht. .. .. Ich konnte mich mit Bluetooth verbinden.

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)

Gekaufter Artikel

Es scheint, dass es im Bad verwendet werden kann.

image.png

Existierendes Produkt

Erste Vorbereitung

Raspberry Pi auf dem neuesten Stand

# sudo apt-get dist-upgrade
# sudo rpi-update

Machen Sie ein Geräusch von der Raspeltorte

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.

Schließen Sie den drahtlosen Lautsprecher an den Raspelkuchen an

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

Machen Sie Ton aus dem drahtlosen Lautsprecher

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)

(2018/1/3 postscript) Java-Einstellung, damit Alexa später richtig über den Bluetooth-Lautsprecher spricht

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

Nächster

Jetzt, da der Lautsprecher Ton erzeugt, werde ich ein Mikrofon anbringen, damit es per Sprache gesteuert werden kann.

Recommended Posts

Erstellen Sie Amazon Alexa kostengünstig mit dem Raspberry Pi 3B + Bluetooth-Lautsprecher (1. Machen Sie zuerst einen Sound)
Erstellen Sie Amazon Alexa kostengünstig mit Raspberry Pi 3B + Bluetooth-Lautsprecher (3 Alexa Voice Service-Installation)
Ich konnte Docker nicht mit Himbeer pi2 b + installieren.