[PYTHON] Comment faire un Raspberry Pi qui parle les tweets d'un utilisateur spécifié

introduction

Le 3ème hackathon laboratoire a eu lieu. Autres membres Article 1, Article 2 Cette fois, j'ai décidé de faire un Raspberry Pi qui parle des tweets. Quant au motif de sa création, l 'article auquel j'ai fait référence lorsque j'ai effectué les réglages initiaux de Razupai pour la première fois décrit Razupai qui parle fort. .. Quand je l'ai lu, j'ai senti que j'aimerais faire une tarte au razz qui parle un jour des tweets de ** Tsui Abolition ** dans le laboratoire. Cette fois, j'ai fait référence à ** Article **

Ce que tu as préparé

--Raspberry Pi 2 + dongle WiFi --MicroSD avec Raspbian installé --Adaptateur secteur

Vérifiez le haut-parleur

Vérifiez le son du haut-parleur

$ speaker-test -t wav

Vous pouvez arrêter le son avec Ctr + C. À ce moment, le son sortait de l'écran connecté par HDMI, afin de produire du son à partir de l'écouteur (haut-parleur virtuel)

$ amixer cset numid=3 1

Vous pouvez convertir la sortie HDMI en sortie analogique en entrant et vous pouvez lire le son du haut-parleur.

Contrôle du volume

$ alsamixer

Installation d'OpenJtalk (logiciel de synthèse vocale)

Qu'est-ce qu'OpenJtalk

--Moteur de synthèse vocale open source

Installer les données vocales OpenJtalk / dictionnaire

$ sudo apt-get update
$ sudo apt-get install open-jtalk 
$ sudo apt-get install open-jtalk-mecab-naist-jdic 
$ sudo apt-get install htsengine libhtsengine-dev 
$ sudo apt-get install hts-voice-nitech-jp-atr503-m001

Si le message "Voulez-vous continuer [O / n]?" S'affiche en chemin, tapez "Y" et appuyez sur la touche "Entrée" pour continuer l'installation.

Création de jtalk.sh

Ensuite, nous allons créer un script pour exécuter OpenJtalk.

jtalk.sh


#!/bin/sh
tmpfile=/tmp/jtalk.wav
htsvoice="/usr/share/hts-voice/\
nitech-jp-atr503-m001/\
nitech_jp_atr503_m001.htsvoice"
echo "$1" | open_jtalk \
-x /var/lib/mecab/dic/open-jtalk/naist-jdic \
-m $htsvoice \
-ow $tmpfile && \
aplay --quiet $tmpfile
rm $tmpfile

Donnez l'autorisation d'exécution au script créé.

$ chmod 755 jtalk.sh

Testez les éléments suivants sur la ligne de commande

$ ./jtalk.sh bonjour

Si vous entendez du haut-parleur comme "Bonjour" OK!

Obtenir un jeton d'accès à l'API Twitter

Connectez-vous à Twitter à partir de l'URL ci-dessous. https://apps.twitter.com/

  1. Cliquez sur "créer une application"
  2. Entrez les éléments requis (appropriés et corrects) スクリーンショット 2020-02-12 18.07.20.png
  3. Cliquez sur "créer" puis sur "Détails" de l'application créée.
  4. Sélectionnez l'onglet "Clés et jetons" et cliquez sur le bouton "Générer" pour le jeton d'accès et le secret du jeton d'accès.
  5. Notez la "clé API", la "clé secrète API", le "jeton d'accès" et le "secret du jeton d'accès". スクリーンショット 2020-02-12 17.57.33.png

Créer un programme Python

paramètres python

#Créer un environnement virtuel
$ sudo apt-get install python3-dev python3-venv
$ python3 -m venv env
$ cd env
$ source bin/activate

Installez tweepy

(env) $ python -m pip install tweepy

Créer teitter.py

#-*- coding:utf-8 -*-
import tweepy
import os
#Définir diverses clés
CONSUMER_KEY = 'xxxxxxxxxxxxxxx'
CONSUMER_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxx'
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
ACCESS_TOKEN = 'xxxxxxxxxxxxxxxxxxxx'
ACCESS_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxx'
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
#Créer une instance d'API
api = tweepy.API(auth)
print('Done!') #Prêt

#Recevoir des tweets
for status in tweepy.Cursor(api.user_timeline,screen_name = "ID de l'utilisateur acquis",exclude_replies = True).items():
    tw_text = status.text
    tw_text = ''.join(tw_text.splitlines())
    tw_text = tw_text.replace('(',' ').replace(')',' ').replace(' ','')
    print(tw_text)
    os.system('/home/pi/jtalk.sh ' + tw_text)
    break #Pour le moment, seuls les derniers tweets

En fait, bougez!

Tapez le code suivant

(env) $ python twitter.py 

Le dernier tweet de l'utilisateur spécifié a été prononcé d'une voix masculine! (Même si c'est une clé, il a parlé s'il me suivait)

en conclusion

Nous avons réussi à faire prononcer à Razpai les derniers tweets de l'utilisateur spécifié dans ce hackathon, je voudrais donc apporter des améliorations afin que l'utilisateur spécifié puisse parler lorsqu'il tweet!

Merci pour la lecture!

Recommended Posts

Comment faire un Raspberry Pi qui parle les tweets d'un utilisateur spécifié
Notez ce que vous voulez faire à l'avenir avec Razpai
Installez un interrupteur tactile sur la tarte à la râpe pour rendre les tweets quotidiens "Good morning Yosoro !!" confortables
Comment créer un wrapper qui préserve la signature de la fonction à envelopper
Comment calculer la volatilité d'une marque
J'ai essayé de créer un script qui retrace les tweets d'un utilisateur spécifique sur Twitter et enregistre l'image publiée à la fois
Comment mentionner un groupe d'utilisateurs avec une notification de mou, comment vérifier l'ID d'un groupe d'utilisateurs
Une nouvelle forme d'application qui fonctionne avec GitHub: Comment créer des applications GitHub
Comment utiliser Raspeye Relay Module Python
Créez un BOT qui raccourcit l'URL Discord
Bases de PyTorch (2) -Comment créer un réseau de neurones-
J'ai refactoré "J'ai essayé de faire un script qui enregistre les images postées à la fois en retournant sur les tweets d'un utilisateur spécifique sur Twitter".
L'explication la plus simple au monde sur la création de LINE BOT (1) [Account preparation]
[Ubuntu] Comment supprimer tout le contenu du répertoire
Comment trouver le coefficient de mise à l'échelle d'une ondelette bipolaire
Y a-t-il un secret dans la fréquence des nombres de rapport de circonférence?
Comment connecter le contenu de la liste dans une chaîne de caractères
J'ai envoyé les données de Raspberry Pi à GCP (gratuit)
Créez facilement un TweetBot qui vous informe de la température et de l'humidité avec Raspberry Pi + DHT11.
Comment créer un LINE BOT 004 interactif (répondre à la date de clôture d'une société cotée)
Comment faire une traduction japonais-anglais
Comment créer un bot slack
Comment créer un robot - Avancé
Comment créer une fonction récursive
[Blender] Comment créer un plug-in Blender
Comment créer un robot - Basic
Comment déterminer l'existence d'un élément sélénium en Python
J'ai essayé de créer un système qui ne récupère que les tweets supprimés
Pour vérifier si la clé spécifiée se trouve dans le compartiment spécifié dans Boto 3
J'ai essayé d'automatiser l'arrosage du pot avec Raspberry Pi
Comment vérifier la taille de la mémoire d'une variable en Python
Créez le thème de Pythonista 3 comme Monokai (comment créer votre propre thème)
Comment faire une commande pour lire le fichier de paramètres avec pyramide
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Comment trouver l'adresse mémoire de la valeur de la trame de données Pandas
Comment afficher le résultat de sortie de la commande man Linux dans un fichier
Comment obtenir les coordonnées de sommet d'une entité dans ArcPy
Raspberry Pi --1 --Première fois (Connectez un capteur de température pour afficher la température)
[Python] Comment créer une matrice de motifs répétitifs (repmat / tile)
[python] Une note que j'ai commencé à comprendre le comportement de matplotlib.pyplot
[NNabla] Comment supprimer le niveau intermédiaire d'un réseau prédéfini
[Python] Un programme qui fait pivoter le contenu de la liste vers la gauche
Un programme qui reçoit la commande d'asservissement du contrôleur radio, interrompt la tarte aux râpes et l'enregistre.
J'ai essayé de créer un site qui permet de voir facilement les informations mises à jour d'Azure
Comment télécharger des fichiers sur Cloud Storage à l'aide de Python [Créer une caméra à point fixe avec Raspberry PI # 1]
Hypothèse / Vérification (176) Comment créer un manuel plus simple que "Le manuel le plus simple pour les ordinateurs quantiques"
Une petite histoire addictive avec les permissions du répertoire spécifié par expdp (pour les débutants)
[Twitter] Je veux faire des tweets téléchargés (de mon compte) dans un beau CSV
Afficher la force du signal RSSI d'un SSID spécifique (raspberry pi (linux))
Un mémo pour utiliser simplement le capteur d'éclairement TSL2561 avec Raspberry Pi 2
Utilisez Rasppie pour résoudre le problème de connexion Wi-Fi mobile insuffisante
[Python] Comment rendre une classe itérable
Comment vérifier la version de Django
Faisons un noyau jupyter
[Python] Un programme qui calcule le nombre de chaussettes jumelées
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
Un mémorandum sur la façon d'écrire des pandas que j'ai tendance à oublier personnellement
J'ai essayé de faire un signal avec Raspeye 4 (édition Python)
[NNabla] Comment ajouter une couche de quantification à la couche intermédiaire d'un modèle entraîné