[PYTHON] Holen Sie sich das Wetter mit API und lassen Sie Raspberry Pi sprechen!

Beim letzten Mal habe ich die Informationen gesprochen, die durch Web Scraping erhalten wurden. Lassen Sie diesmal Raspberry Pi die Wetterinformationen mit openJtalk sprechen!

Was können Sie mit diesem Artikel tun?

Annahme

・ Python 3 und OpenJtalk können auf Raspberry Pi verwendet werden (Die Installation von OpenJtalk wird in diesem Artikel erläutert. Wenn Sie dies noch nicht getan haben!)

Betriebsumgebung

・ Himbeer Pi3 Modell B. ・ Betriebssystem: Raspbian ・ Python Version 3.7

Holen Sie sich Wetterinformationen mit APi

In diesem Artikel, https://openweathermap.org/ Verwenden Sie die von bereitgestellte API. Mein Vorgänger hat dies für mich getan. Lesen Sie daher den folgenden Artikel und registrieren Sie sich. Artikel 1: https://qiita.com/syunyo/items/b408b8d61f9f73b21da7 Artikel 2: https://qiita.com/nownabe/items/aeac1ce0977be963a740

Führen Sie openJtalk über ein Python-Skript aus

Von hier aus gehen wir davon aus, dass die API-Registrierung für Open Weather Map abgeschlossen ist. Erstellen Sie ein geeignetes Verzeichnis.

$ mkdir weatherapi
$ cd weatherapi

Schreiben Sie zunächst den folgenden Code, damit openJtalk mit Python-Skripten arbeiten kann.

$ vi jtalk.py

Drücken Sie i, um den Bearbeitungsmodus aufzurufen, und kopieren Sie dann Folgendes und fügen Sie es ein.

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 Monat%s Tag,%s Zeit%s Minuten%s Sekunden' % (d.month, d.day, d.hour, d.minute, d.second)
    jtalk(text)

if __name__ == '__main__':
    say_datetime()

Der obige Code verwendet die nicht standardmäßige weibliche Stimme von openJtalk. Für diejenigen, die nur openJtalk installieren htsvoice=['-m','/usr/share/hts-voice/mei/mei_normal.htsvoice'] Zu htsvoice=['-m','/usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice] Bitte wechseln Sie zu.

Sprechen Sie die Wetterinformationen, die Sie durch Drücken der API erhalten haben

Schreiben Sie als Nächstes den Code, um die API zu treffen, in dasselbe Verzeichnis, um zu sprechen. Auf die gleiche Weise

$ vi weather_api_jtalk.py

Drücken Sie i, um den Bearbeitungsmodus aufzurufen, und kopieren Sie dann Folgendes und fügen Sie es ein.

weather_api_jtalk.py


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

#open weather map &Audioausgabe des Wetters mit 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" #Geben Sie hier Ihren API-Schlüssel ein

#Liste der Städte, für die Sie das Wetter überprüfen möchten
#cities = ["Sendai,JP", "London,UK", "New York,US"]
cities = ["Sendai,JP"] #Diesmal nur Sendai
#API-Vorlage
api = "http://api.openweathermap.org/data/2.5/weather?q={city}&APPID={key}"

#Temperaturumwandlung(Kelvin → Setsu)
k2c = lambda k: k - 273.15

#Holen Sie sich die Temperatur jeder Stadt
for name in cities:
    #Holen Sie sich die API-URL
    url = api.format(city=name, key=apikey)
    #Senden Sie tatsächlich eine Anfrage an die API und erhalten Sie das Ergebnis
    r = requests.get(url)
    
    #Das Ergebnis ist im JSON-Format, dekodieren Sie also json-> dictionary
    data = json.loads(r.text)    
    
    #Ausgabeergebnis
    
    jtalk.jtalk("Kokon'nichiwa, Wetter heute")
    time.sleep(2)
    print("+Stadt=", data["name"])
    print("|Wetter=", data["weather"][0]["description"])
    if "rain" in data["weather"][0]["description"]:
        jtalk.jtalk("Es regnet.")
    else:
        jtalk.jtalk("Es ist kein Regen")
    time.sleep(2)
    print("|Niedrigste Temperatur=", k2c(data["main"]["temp_min"]))
    jtalk.jtalk("Die niedrigste Temperatur ist in Grad Celsius"+str(k2c(data["main"]["temp_min"]))+"Wie ist das?")
    time.sleep(4)
    print("|Höchste Temperatur=", k2c(data["main"]["temp_max"]))
    jtalk.jtalk("Die maximale Temperatur ist in Grad Celsius"+str(k2c(data["main"]["temp_max"]))+"Wie ist das?")
    #print("|Feuchtigkeit=", data["main"]["humidity"])
    #print("|Druck=", data["main"]["pressure"])
    #print("|Windrichtung=", data["wind"]['deg'])
    #print("|Windgeschwindigkeit=", data["wind"]["speed"])
    #print("")
    #print("missing some requested data or some error occurs")

Lauf

$ python weather_api_jtalk.py

Wie wär es damit? Ich pendle immer mit dem Fahrrad, also möchte ich nur wissen, ob es regnet. Wenn es regnet, sage ich "es regnet", ansonsten sage ich "es regnet nicht". Als nächstes werden Sie über die minimalen und maximalen Temperaturen informiert.

Hier gibt es eine Einschränkung.

Ich bin hier ein bisschen süchtig danach, also werde ich es betonen.

jtalk.jtalk("Kokon'nichiwa, Wetter heute")
time.sleep(2)

Wie Sie hier sehen können, wird die Schlaffunktion verwendet, um die Ausführung zu stoppen, während der jtalk spricht. Wenn Sie dies nicht tun, werden die als nächstes auszugebenden Sprachinformationen während des Gesprächs eingegeben und die Sprache wird unterbrochen. Nach jtalk.jtalk () gibt es also eine Ausfallzeit, die der Zeit ähnelt, die zum Sprechen benötigt wird. time.sleep (ungefähr die Zeit, die zum Sprechen benötigt wird) Bitte Sandwich.

Zusammenfassung

Dieses Mal habe ich die API aufgerufen, um das Wetter abzurufen und es mit OpenJtalk als Audio auszugeben. Ich denke, dass Sie mit der natürlichen Dialog-API sprechen können. Dann!

Recommended Posts

Holen Sie sich das Wetter mit API und lassen Sie Raspberry Pi sprechen!
Erhalten Sie Wetterinformationen über Yahoo! Open Local Platform (YOLP) und lassen Sie Razpai mit AquesTalkPi sprechen
So erhalten Sie mithilfe der Mastodon-API Follower und Follower von Python
Erhalten Sie Nachrichten von jedem der drei großen Mobilfunkunternehmen mithilfe von Django und der Nachrichten-API
Lassen Sie den Summer mit Python auf Raspberry Pi 3 erklingen!
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
Erklären Sie vorsichtig den Prozess der Erstellung einer einfachen Überwachungskamera ohne Server mithilfe von Raspeye, Gmail API und Line API
Erstellen Sie einen Farbsensor mit einem Raspeltorte und einer Kamera
Verwendung des digitalen Beleuchtungsstärkesensors TSL2561 mit Raspberry Pi
Versuchen Sie es mit dem Temperatursensor (LM75B) mit Raspeye.
Senden und empfangen Sie Google Mail über die Google Mail-API mit Python
Erhalten Sie Kommentare und Abonnenten mit der YouTube-Daten-API
Verwenden Sie die Spotify-API, um alle Songs von Arashis Songinformationen abzurufen und den Index zu überprüfen
Verwenden Sie den Bildspeicher (/ dev / fb0) mit Raspeye, um Anzeigebilder direkt einzugeben und auszugeben
Innenüberwachung mit Raspberry Pi
Erhalten Sie Daten mithilfe der API des Ministeriums für innere Angelegenheiten und Kommunikation
Versuchen Sie es mit der Twitter-API
Ich habe versucht, Raspeye und conect + mit der Web-API zu verbinden
Erstellen Sie eine Partition und installieren Sie Raspberry Pi OS
Versuchen Sie es mit der Twitter-API
Versuchen Sie es mit der PeeringDB 2.0-API
Holen Sie sich den Produktnamen und den niedrigsten Preis mit der Amazon Product Advertising API
So erhalten Sie die Temperatur vom SwitchBot-Thermo-Hygrometer mit Himbeer-Pi
Steuern Sie den Motor mit einem Motortreiber mit Python auf Raspberry Pi 3!
Machen Sie einen einfachen CO2-Inkubator mit Raspberry PI und CO2-Sensor (MH-Z14A)
Wiegeinstrument mit Himbeer-Pi und hx711 (GUI-Anzeige in Tkinter)
Rufen Sie den Wert des Dropdown-Menüs mit Python und Selen ab und legen Sie ihn fest
Erstellen Sie Ihre eigene IoT-Plattform mit Himbeerpi und ESP32 (Teil 1)
Abrufen von Salesforce-Daten mithilfe der REST-API
MQTT auf Raspberry Pi und Mac
Holen Sie sich das Wetter mit Python-Anfragen
Versuchen Sie es mit ArUco mit Raspberry Pi
Abrufen von Amazon-Daten mit Keep API # 1 Abrufen von Daten
Python Holen Sie sich das kommende Wetter von der Wetter-API
Verwenden einer Webkamera mit Raspberry Pi
Holen Sie sich den Dateipfad mit Pathlib
Ich habe versucht, die checkio-API zu verwenden
Ich habe ein npm-Paket erstellt, um die ID der IC-Karte mit Raspberry Pi und PaSoRi zu erhalten
Lassen Sie mich Ihnen die Leistung des neuen Raspberry Pi Zero (v1.3) zeigen!
Erfassen Sie den Sensorwert von Grove Pi + mit Raspberry Pi und speichern Sie ihn in Kintone
Codebeispiel zum Abrufen von oauth_token und oauth_token_secret der Twitter-API in Python 2.7
Erhalten und schätzen Sie die Form des Kopfes mit Dlib und OpenCV mit Python
Die Temperatur wird automatisch mit Raspberry Pi 3 gemessen und automatisch zur Anzeige auf den Server (Docker Python3 + Flasche + MySQL) hochgeladen!
Haustierüberwachung mit Rekognition und Raspberry pi
Versuchen Sie es mit der Wunderlist-API in Python
Kaufen und verkaufen Sie virtuelle Währungen mit der Zaif-API
[Raspberry Pi] Fügen Sie ein Thermometer und ein Feuchtigkeitsmessgerät hinzu
Erkennen Sie "Helligkeit" mit Python auf Raspberry Pi 3!
Versuchen Sie, die Kraken-API mit Python zu verwenden
Erhalten Sie E-Mails mithilfe der Google Mail-API in Java
Tweet mit der Twitter-API in Python
Erhalten Sie Parlamentsprotokolle über API
Verwenden Sie den Grove-Sensor mit Raspberry Pi
Holen Sie sich Youtube-Daten in Python mithilfe der Youtube-Daten-API
Lassen Sie einen Servomotor mit Python auf Raspberry Pi 3 laufen
Holen Sie sich Urlaub mit der Google Kalender-API