[PYTHON] Obtenez la météo en utilisant l'API et laissez Raspberry Pi parler!

La dernière fois, j'ai parlé des informations obtenues par le web scraping. Cette fois, laissez Raspberry Pi parler des informations météorologiques en utilisant openJtalk!

Que pouvez-vous faire avec cet article

supposition

・ Python 3 et OpenJtalk peuvent être utilisés sur Raspberry Pi (L'installation d'OpenJtalk est expliquée dans cet article, donc si vous ne l'avez pas déjà fait!)

Environnement d'exploitation

・ Raspberry Pi3 modèle B ・ Système d'exploitation: Raspbian ・ Python ver3.7

Obtenez des informations météo avec APi

Dans cet article, https://openweathermap.org/ Utilisez l'API fournie par. Quant à savoir comment l'utiliser, mon prédécesseur l'a fait pour moi, veuillez donc vous référer à l'article suivant et vous inscrire. Article 1: https://qiita.com/syunyo/items/b408b8d61f9f73b21da7 Article 2: https://qiita.com/nownabe/items/aeac1ce0977be963a740

Exécutez openJtalk à partir d'un script python

À partir de là, nous partirons du principe que l'enregistrement de l'API pour Open weather map a été effectué. Créez un répertoire approprié.

$ mkdir weatherapi
$ cd weatherapi

Tout d'abord, écrivez le code suivant afin qu'openJtalk puisse fonctionner avec des scripts Python.

$ vi jtalk.py

Appuyez sur i pour passer en mode édition, puis copiez et collez ce qui suit.

jtalk.py


#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import subprocess
from datetime import datetime

def jtalk(t):
    open_jtalk=['open_jtalk']
    mech=['-x','/var/lib/mecab/dic/open-jtalk/naist-jdic']
    htsvoice=['-m','/usr/share/hts-voice/mei/mei_normal.htsvoice']
    speed=['-r','1.0']
    outwav=['-ow','open_jtalk.wav']
    cmd=open_jtalk+mech+htsvoice+speed+outwav
    c = subprocess.Popen(cmd,stdin=subprocess.PIPE)
    c.stdin.write(t.encode())
    c.stdin.close()
    c.wait()
    aplay = ['aplay','-q','open_jtalk.wav']
    wr = subprocess.Popen(aplay)

def say_datetime():
    d = datetime.now()
    text = '%s mois%jour de s,%s temps%s minutes%s secondes' % (d.month, d.day, d.hour, d.minute, d.second)
    jtalk(text)

if __name__ == '__main__':
    say_datetime()

Le code ci-dessus utilise la voix féminine non par défaut d'openJtalk. Pour ceux qui n'installent que openJtalk htsvoice=['-m','/usr/share/hts-voice/mei/mei_normal.htsvoice'] À htsvoice=['-m','/usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice] Veuillez changer en.

Dites les informations météorologiques obtenues en accédant à l'API

Ensuite, écrivez le code pour frapper l'API dans le même répertoire pour parler. De la même manière

$ vi weather_api_jtalk.py

Appuyez sur i pour passer en mode édition, puis copiez et collez ce qui suit.

weather_api_jtalk.py


#!/usr/bin/env python3
# -*- coding: utf-8 -*-

#open weather map &Sortie audio de la météo avec openJtalk
#Reference: https://qiita.com/syunyo/items/b408b8d61f9f73b21da7

#API import
import requests
import json

### jtalk import
import jtalk
import time

# API key
apikey = "your api key" #Mettez votre clé API ici

#Liste des villes pour lesquelles vous souhaitez consulter la météo
#cities = ["Sendai,JP", "London,UK", "New York,US"]
cities = ["Sendai,JP"] #Seulement Sendai cette fois
#Modèle d'API
api = "http://api.openweathermap.org/data/2.5/weather?q={city}&APPID={key}"

#Conversion de température(Kelvin → Setsu)
k2c = lambda k: k - 273.15

#Obtenez la température de chaque ville
for name in cities:
    #Obtenez l'URL de l'API
    url = api.format(city=name, key=apikey)
    #En fait, envoyez une requête à l'API et obtenez le résultat
    r = requests.get(url)
    
    #Le résultat est au format JSON, donc décodez json-> dictionary
    data = json.loads(r.text)    
    
    #Résultat de sortie
    
    jtalk.jtalk("Kokon'nichiwa, météo aujourd'hui")
    time.sleep(2)
    print("+ville=", data["name"])
    print("|Météo=", data["weather"][0]["description"])
    if "rain" in data["weather"][0]["description"]:
        jtalk.jtalk("C'est la pluie.")
    else:
        jtalk.jtalk("Ce n'est pas la pluie")
    time.sleep(2)
    print("|Température la plus basse=", k2c(data["main"]["temp_min"]))
    jtalk.jtalk("La température la plus basse est en degrés Celsius"+str(k2c(data["main"]["temp_min"]))+"Comment c'est?")
    time.sleep(4)
    print("|Température la plus élevée=", k2c(data["main"]["temp_max"]))
    jtalk.jtalk("La température maximale est en degrés Celsius"+str(k2c(data["main"]["temp_max"]))+"Comment c'est?")
    #print("|Humidité=", data["main"]["humidity"])
    #print("|Pression=", data["main"]["pressure"])
    #print("|Direction du vent=", data["wind"]['deg'])
    #print("|Vitesse du vent=", data["wind"]["speed"])
    #print("")
    #print("missing some requested data or some error occurs")

Courir

$ python weather_api_jtalk.py

Et ça? Je fais toujours la navette en vélo, donc je veux juste savoir s'il pleut, donc s'il pleut, je dis "il pleut", sinon je dis "il ne pleut pas". Ensuite, il vous informera des températures minimales et maximales.

Il y a une mise en garde ici.

J'y suis un peu accro ici, alors je vais le souligner.

jtalk.jtalk("Kokon'nichiwa, météo aujourd'hui")
time.sleep(2)

Comme vous pouvez le voir ici, la fonction sleep est utilisée pour arrêter l'exécution tout en parlant avec jtalk. Si vous ne le faites pas, les informations vocales à émettre ensuite entreront pendant que vous parlez et la parole sera interrompue. Donc, après jtalk.jtalk (), il y a un temps d'arrêt similaire au temps qu'il faut pour parler. time.sleep (environ le temps qu'il faudra pour parler) Veuillez prendre un sandwich.

Résumé

Cette fois, j'ai frappé l'API pour obtenir la météo et la diffuser en audio en utilisant OpenJtalk. Je pense que vous pourrez parler en utilisant l'API de dialogue naturel. Puis!

Recommended Posts

Obtenez la météo en utilisant l'API et laissez Raspberry Pi parler!
Obtenez des informations météorologiques à l'aide de Yahoo! Open Local Platform (YOLP) et laissez Razpai parler avec AquesTalkPi
Comment obtenir des abonnés et des abonnés de Python à l'aide de l'API Mastodon
Recevez des nouvelles de chacune des trois principales entreprises de téléphonie mobile en utilisant Django et l'API News
Sonnez le buzzer en utilisant python sur Raspberry Pi 3!
Obtenez la température et l'humidité avec DHT11 et Raspberry Pi
Expliquez doucement le processus de création d'une simple caméra de surveillance sans serveur à l'aide de Raspeye, de l'API Gmail et de l'API Line
Créez un capteur de couleur à l'aide d'une tarte à la râpe et d'une caméra
Utilisez le capteur d'éclairement numérique TSL2561 avec Raspberry Pi
Essayez d'utiliser le capteur de température (LM75B) avec Raspeye.
Envoyez et recevez Gmail via l'API Gmail en utilisant Python
Obtenez des commentaires et des abonnés avec l'API de données YouTube
Utilisez l'API Spotify pour obtenir toutes les chansons des informations sur les chansons d'Arashi et vérifier l'index
Utilisez le frame buffer (/ dev / fb0) avec Raspeye pour entrer et sortir directement les images d'affichage
Surveillance intérieure à l'aide de Raspberry Pi
Obtenez des données à l'aide de l'API du ministère des Affaires intérieures et des Communications
Essayez d'utiliser l'API Twitter
J'ai essayé de connecter Raspeye et conect + avec l'API Web
Créez une partition, puis installez le système d'exploitation Raspberry Pi
Essayez d'utiliser l'API Twitter
Essayez d'utiliser l'API PeeringDB 2.0
Obtenez le nom du produit et le prix le plus bas à l'aide de l'API Amazon Product Advertising
Comment obtenir la température du thermo-hygromètre SwitchBot à l'aide de Raspberry Pi
Contrôlez le moteur avec un pilote de moteur en utilisant python sur Raspberry Pi 3!
Fabriquez un incubateur à CO2 simple à l'aide de Raspberry PI et d'un capteur de CO2 (MH-Z14A)
Instrument de pesage utilisant Raspberry Pi et Hx711 (affichage GUI dans Tkinter)
Obtenez et définissez la valeur du menu déroulant en utilisant Python et Selenium
Créez votre propre plateforme IoT en utilisant raspberrypi et ESP32 (partie 1)
Obtenir des données Salesforce à l'aide de l'API REST
MQTT sur Raspberry Pi et Mac
Obtenez la météo avec les requêtes Python
Essayez d'utiliser ArUco avec Raspberry Pi
Obtenez des données Amazon à l'aide de Keep API # 1 Obtenez des données
python Obtenez la météo à venir de l'API météo
Utiliser une webcam avec Raspberry Pi
Obtenez le chemin du fichier à l'aide de Pathlib
J'ai essayé d'utiliser l'API checkio
J'ai fait un package npm pour obtenir l'ID de la carte IC avec Raspberry Pi et PaSoRi
Laissez-moi vous montrer les performances du nouveau Raspberry pi zero (v1.3)!
Acquérir la valeur du capteur de Grove Pi + avec Raspberry Pi et la stocker dans Kintone
Exemple de code pour obtenir oauth_token et oauth_token_secret de l'API Twitter en Python 2.7
Obtenez et estimez la forme de la tête en utilisant Dlib et OpenCV avec python
La température est automatiquement mesurée à l'aide de Raspberry Pi 3 et automatiquement téléchargée sur le serveur (Docker python3 + bouteille + MySQL) pour visualisation!
Surveillance des animaux avec Rekognition et Raspberry pi
Essayez d'utiliser l'API Wunderlist en Python
Achetez et vendez de la monnaie virtuelle à l'aide de l'API Zaif
[Raspberry Pi] Ajouter un thermomètre et un hygromètre
Détectez la "luminosité" en utilisant python sur Raspberry Pi 3!
Essayez d'utiliser l'API Kraken avec Python
Recevoir des e-mails à l'aide de l'API Gmail en Java
Tweet à l'aide de l'API Twitter en Python
Obtenez les débats parlementaires via l'API
Utiliser le capteur Grove avec Raspberry Pi
Obtenez des données Youtube en Python à l'aide de l'API Youtube Data
Exécutez un servomoteur en utilisant python sur Raspberry Pi 3
Obtenez des vacances avec l'API Google Agenda