Article image
Carlos Soares
Carlos Soares23/06/2024 22:08
Compartilhe

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:

    1. Crie uma conta no OpenWeatherMap.
    2. Faça login no site.
    3. Navegue até a seção "API Keys" no painel de controle.
    4. 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_recognitionpyttsx3 e requests. Use o seguinte comando no terminal:

    pip install speech_recognition 
    pip install pyttsx3 
    pip install requests
    

    image

    "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ção falar que converte texto em fala.
    • A função falar usa pyttsx3 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 usa speech_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/

    Compartilhe
    Comentários (0)