Quand j'ai finalement acheté Amazon Echo et l'ai essayé, j'ai ressenti une innovation technologique. Après tout, une fille de 28 ans a dit "Prenons Alexa" sans regarder les instructions, et la conversation a été établie. Eh bien, je veux en acheter deux, mais je n'ai pas reçu d'invitation d'Amazon. J'ai un Raspberry Pi à portée de main.
Il y a une main dans un tel cas. Comment transformer Raspberry Pi en Amazon Echo. Amazon distribue gratuitement AVS (Amazon Voice Service) pour les développeurs, et Alexa (voix d'Amazon Echo) y est incluse. Je veux le déplacer d'une manière ou d'une autre.
À partir de maintenant, j'achèterai le matériel nécessaire au prix le plus bas possible dans la situation où seul Raspberry Pi 3B est disponible, et viserai à démarrer Alexa équivalent à Echo.
Vous trouverez ci-dessous un article sur les pionniers de la création d'Echo avec Raspberry Pi.
https://qiita.com/bwtakacy/items/32226ed2406b5ebe1984
Raspeye a une sortie analogique pour le haut-parleur, il est donc assez bon d'en faire un son. (Apt-get install mpg321 pour lire des mp3) Cette fois, je souhaite émettre du son à partir du haut-parleur sans fil. Sinon, vous n'entendrez ni la voix ni la chanson d'Alexa. (Chanson: http://www.itmedia.co.jp/news/articles/1712/19/news097.html)
Il semble qu'il puisse être utilisé dans le bain.
# sudo apt-get dist-upgrade
# sudo rpi-update
Il semble qu'un démon appelé PulseAudio doit être en cours d'exécution pour émettre des sons à partir de la tarte aux râpes.
sudo apt-get install pulseaudio pavucontrol
pulseaudio -D
Vous devriez maintenant entendre le son de la sortie analogique en premier. Par exemple, j'ai un fichier mp3 sous la main
mpg321 Chicken.mp3
Si tel est le cas, Par exemple, Chicken Attack sera également jouable.
Activez le haut-parleur sans fil. Tout d'abord, associez-le en Bluetooth. Les détails sont décrits dans l'article suivant.
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
Le service crée le fichier suivant et
[Unit]
Description=Pulse Audio
[Service]
Type=simple
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disable-shm
[Install]
WantedBy=multi-user.target
Démarrez le démon avec la commande suivante et configurez-le pour qu'il démarre automatiquement.
$ sudo systemctl start pulseaudio.service
$ sudo systemctl status pulseaudio.service
$ sudo systemctl enable pulseaudio.service
Selon l'article ci-dessous, il est nécessaire de définir Bluetooth comme destination de sortie du démon pulseaudio.
http://zokibayashi.hatenablog.com/entry/2017/10/10/020902
Ajoutez ce qui suit à la fin.
/etc/pulse/system.pa
<Omission>
### 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
Définissez la destination du transfert dans /etc/dbus-1/system.d/pulseaudio-bluetooth.conf. Bluez est une implémentation du protocole de transfert Bluetooth.
http://www.silex.jp/blog/wireless/2012/12/bluetooth4.html
/etc/dbus-1/system.d/pulseaudio-bluetooth.conf
<policy user="pulse">
<!--Commentez ici
<allow own="org.pulseaudio.Server"/>
Fin du commentaire-->
<allow send_destination="org.bluez"/>
</policy>
Redémarrez le système.
sudo reboot
S'il n'y a pas de son, vous n'aurez peut-être pas accès au transfert avec impulsion. Donnez les droits d'accès ci-dessous.
sudo usermod -a -G pulse-access,audio pi(Ceci est le nom d'utilisateur)
Plus tard, j'exécute l'application exemple Alexa, mais pour une raison quelconque, elle ne produit que du son à partir de la sortie analogique.
Pour cette raison, à la suite de diverses investigations, je me suis restreint au paramètre lié à Java selon lequel le son ne sonne pas uniquement à partir de l'application Java (autre son mpg321
et ʻaplay`), et j'ai trouvé l'article suivant et j'ai réussi Je comprends comment faire une voix.
https://stackoverflow.com/questions/45847635/java-audio-clip-cannot-be-closed-when-using-linux-pulseaudio
C'est un peu déroutant, mais il semble que vous deviez transférer via la route Alsa Userland → Pulse Audio → Haut-parleur Bluetooth.
Maintenant, pour cela, éditez le fichier suivant avec sudo
et ajoutez les 4 lignes suivantes.
/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
Maintenant que le haut-parleur produit du son, je vais connecter un microphone pour qu'il puisse être contrôlé par la voix.
Recommended Posts