Crie Seu Próprio Assistente de Voz para Previsão do Tempo em Python com OpenWeatherMap
Olá galera Dev!
Hoje vamos criar um aplicativo que utiliza reconhecimento de voz para obter informações sobre o clima e responde com síntese de fala. Vamos explorar como integrar a API do OpenWeatherMap com as bibliotecas speech_recognition
e pyttsx3
para construir essa aplicação interessante e interativa.
Introdução à API do OpenWeatherMap
A API do OpenWeatherMap fornece dados meteorológicos atuais, previsões e informações históricas. É uma ferramenta poderosa para desenvolvedores que desejam integrar dados climáticos em seus aplicativos e projetos em geral. Para usar essa API, você precisa de uma chave de API, que pode ser obtida seguindo os passos abaixo:
- Crie uma conta no OpenWeatherMap.
- Faça login no site.
- Navegue até a seção "API Keys" no painel de controle.
- Crie uma nova chave de API e copie-a para usar em seu código.
Integrando a API com Bibliotecas de Fala e Reconhecimento de Voz
Agora, vamos ver como podemos usar essa chave de API para integrar dados climáticos com reconhecimento de voz e síntese de fala em um aplicativo Python.
Instalação das Bibliotecas Necessárias
Primeiro, precisamos instalar as bibliotecas speech_recognition
, pyttsx3
e requests
. Use o seguinte comando no terminal:
pip install speech_recognition
pip install pyttsx3
pip install requests
"Falar é Fácil, Mostre-me o Código"
Configurando o motor de fala:
Vamos configurar o motor de síntese de fala usando pyttsx3
:
import pyttsx3
# Configurar o motor de fala
engine = pyttsx3.init()
def falar(texto):
engine.say(texto)
engine.runAndWait()
- Configurar o motor de fala: Essa parte configura o motor de síntese de fala
pyttsx3
e define a funçãofalar
que converte texto em fala. - A função
falar
usapyttsx3
para converter texto em fala. Essa função será usada para dar a resposta sobre o clima ao usuário.
Função para Obter o Clima:
- A função
get_weather
faz uma solicitação à API do OpenWeatherMap para obter a temperatura da cidade especificada. - A seguir, criamos a função
get_weather(city)
que consulta a API do OpenWeatherMap e retorna a temperatura atual da cidade solicitada:
import requests
def get_weather(city):
api_key = 'COLE_SUA_CHAVE_API_AQUI' # Substitua pela sua chave de API
base_url = "http://api.openweathermap.org/data/2.5/weather?"
complete_url = base_url + "appid=" + api_key + "&q=" + city
response = requests.get(complete_url)
if response.status_code == 200:
data = response.json()
main = data['main']
temperature = round(main['temp'] - 273.15, 2)
return f"A temperatura em {city} neste momento é de {temperature} graus celsius."
else:
return "Cidade não encontrada."
Aqui, get_weather
faz uma solicitação HTTP para a API do OpenWeatherMap com o nome da cidade e a chave de API. A temperatura é convertida de Kelvin para Celsius.
Reconhecimento de Comando de Voz:
- A função
reconhecer_comando
usaspeech_recognition
para ouvir e transcrever a resposta do usuário, perguntando de qual cidade ele deseja saber o clima. - Para capturar e reconhecer comandos de voz, usamos a biblioteca
speech_recognition
:
import speech_recognition as sr
def reconhecer_comando():
recognizer = sr.Recognizer()
with sr.Microphone() as source:
print("De qual cidade você deseja saber o clima?")
falar("De qual cidade você deseja saber o clima?")
recognizer.adjust_for_ambient_noise(source)
audio = recognizer.listen(source)
try:
comando = recognizer.recognize_google(audio, language='pt-BR')
print(f"Você disse: {comando}")
return comando
except sr.UnknownValueError:
print("Não consegui entender o que você disse.")
falar("Não consegui entender o que você disse.")
return ""
except sr.RequestError:
print("Não foi possível obter os resultados da API de reconhecimento de voz.")
falar("Não foi possível obter os resultados da API de reconhecimento de voz.")
return ""
Nesta função, reconhecer_comando
, configuramos o microfone para ouvir o comando do usuário e usar o serviço de reconhecimento de voz do Google para transcrever o áudio em texto.
Loop Principal:
- No
main
, o programa pergunta de qual cidade o usuário deseja saber o clima, obtém a informação climática e responde com a temperatura. - Finalmente, montamos tudo isso no loop principal do nosso aplicativo:
def main():
city = reconhecer_comando()
if city:
clima = get_weather(city)
falar(clima)
print(clima)
if __name__ == "__main__":
main()
No main
, o programa pergunta de qual cidade o usuário deseja saber o clima, ouvindo a resposta, obtendo as informações climáticas e falando a resposta.
Concluindo
Neste artigo, criamos um aplicativo Python interativo que utiliza reconhecimento de voz e síntese de fala para fornecer informações climáticas em tempo real. Integrar a API do OpenWeatherMap com as bibliotecas speech_recognition
e pyttsx3
permitiu criássemos uma aplicação prática e interessante e útil. Espero ter te ajudado um pouco na sua jornada e até a próxima.
"Vamos Disseminar os Conhecimentos e Transbordar Tudo o que Aprendemos!"
Segue lá no GitHub: https://github.com/Carlos-CGS
Segue lá no LinkedIn: https://www.linkedin.com/in/carlos-cgs/