一度に全て処理しpygame で読み上げ
wavファイルの読み上げを gygame にすることでエラー対処
import requests import json from datetime import datetime import deepl def get_weather_forecast(latitude, longitude, API_key, deepl_auth_key): # DeepL Translatorのインスタンスを生成 translator = deepl.Translator(deepl_auth_key) # OpenWeather APIのURL url = "https://api.openweathermap.org/data/2.5/onecall?lat={lat}&lon={lon}&exclude=hourly,minutely&units=metric&lang=ja&appid={API_key}" url = url.format(lat=latitude, lon=longitude, API_key=API_key) # APIリクエスト response = requests.get(url) jsondata = response.json() # 今日の日付を取得 today = datetime.now().date() # 今日の天気予報を探す for daily_forecast in jsondata["daily"]: date = datetime.fromtimestamp(daily_forecast["dt"]).date() if date == today: min_temp = daily_forecast["temp"]["min"] max_temp = daily_forecast["temp"]["max"] weather = daily_forecast["weather"][0]["main"] description = daily_forecast["weather"][0]["description"] break # 天気をdeeplで日本語に翻訳 weather_japanese = translator.translate_text(weather, target_lang="JA").text # 今日の天気予報をまとめる today_weather_repo = f"今日の天気は{weather_japanese}、予想最高気温は{max_temp}度、予想最低気温は{min_temp}度です" return today_weather_repo # 関数を使用して天気予報を取得 latitude = "緯度" longitude = "経度" API_key = "weather map apiキー" deepl_auth_key = "deeplのAPIキー" weather_report = get_weather_forecast(latitude, longitude, API_key, deepl_auth_key) # 天気予報をテキストファイルに保存 with open('weather.txt', 'w') as file: file.write(weather_report)
として関数にして
weather_forecast.py
として保存
次に
import subprocess import pygame import time from weather_forecast import get_weather_forecast # 天気予報を取得してファイルに保存 latitude = "緯度" longitude = "経度" API_key = "weather map apiキー" deepl_auth_key = "DeepL APIキー" weather_report = get_weather_forecast(latitude, longitude, API_key, deepl_auth_key) with open('weather.txt', 'w') as file: file.write(weather_report) # JSONファイルを作成するためのcurlコマンド command_json = [ "curl", "-s", "-X", "POST", "192.168.1.69:50021/audio_query?speaker=1", "--get", "--data-urlencode", "text@weather.txt" ] # 音声ファイルを作成するためのcurlコマンド command_audio = [ "curl", "-s", "-H", "Content-Type: application/json", "-X", "POST", "-d", "@query.json", "192.168.1.69:50021/synthesis?speaker=1" ] # 最初のコマンドを実行してJSONファイルを作成 with open('query.json', 'w') as file: subprocess.run(command_json, stdout=file) # 第二のコマンドを実行して音声ファイルを作成 with open('test_audio.wav', 'wb') as file: subprocess.run(command_audio, stdout=file) # Pygameの初期化 pygame.init() pygame.mixer.init() # WAVファイルを読み込む sound = pygame.mixer.Sound("test_audio.wav") # 再生 sound.play() # 再生が終了するまで待機 while pygame.mixer.get_busy(): time.sleep(0.1)
として作成したファイルを元に
Subprocess で
Curl で音声ファイルを作成
それをpygame で読み上げるようにした
とりあえず動作確認はできたので
次に顔認識と合わせてみる