Python para Dados
- #Python
# Desvendando Assistentes Virtuais com Python: Tecnologias e Aplicações
## Introdução
No mundo atual, os assistentes virtuais têm ganhado destaque, oferecendo suporte e interação em diversas áreas da tecnologia. Projetos como 'assistencia_virtual' demonstram o poder das bibliotecas Python para criar sistemas eficientes e amigáveis. Neste artigo, vamos explorar como desenvolver um assistente virtual utilizando Python, abordando suas principais funcionalidades e estruturas de código.
## O que é um Assistente Virtual?
Assistentes virtuais são softwares que interagem com os usuários por meio de voz ou texto, executando tarefas como:
🔹 Busca de informações
🔹 Gerenciamento de agendas
🔹 Controle de dispositivos e muito mais
Exemplos populares incluem Siri, Alexa, Google Assistant e Copilot. Eles utilizam tecnologias avançadas de processamento de linguagem natural (PLN) e reconhecimento de voz para entender e responder aos comandos dos usuários.
## Python e Assistentes Virtuais
Python é uma linguagem extremamente versátil e poderosa, amplamente utilizada no desenvolvimento de assistentes virtuais. Bibliotecas como NLTK, SpaCy e TensorFlow facilitam a construção desses sistemas, oferecendo ferramentas para:
🔹 Processamento de linguagem natural
🔹 Aprendizado de máquina
🔹 Reconhecimento de voz
## Desenvolvimento no Visual Studio Code (VSCode)
O VSCode é um editor de código popular, conhecido por sua flexibilidade e suporte a várias linguagens de programação, incluindo Python. Usar o VSCode pode tornar o desenvolvimento de projetos em Python e machine learning mais eficiente, graças a suas extensões e ferramentas integradas.
## Funcionalidades do Projeto 'assistencia_virtual'
Este projeto é composto por dois scripts principais: 'text-to-speech.py' e 'speech-to-text.py', ambos utilizando bibliotecas de reconhecimento de fala e síntese de voz para interagir com o usuário de maneira eficiente.
### 'text-to-speech.py'
#### Captura de Texto e Conversão para Áudio
🔹 Captura texto digitado pelo usuário.
🔹 Converte o texto para áudio em Português do Brasil ('pt-BR') e Inglês dos Estados Unidos ('en-us').
🔹 Utiliza a biblioteca 'pyttsx3' para a conversão de texto em fala.
#### Interação Contínua com o Usuário
🔹 Permite que o usuário continue gerando novos áudios até que decida sair do sistema digitando "Q".
🔹 Fornece feedback visual e auditivo das ações realizadas.
#### Formatação de Texto
🔹 Utiliza a biblioteca 'colorama' para formatar o texto exibido no terminal com diferentes cores.
#### Exemplo de Código: 'text-to-speech.py'
Aqui está um trecho de código para ilustrar como converter texto em áudio:
import pyttsx3
import os
from googletrans import Translator
from colorama import init, Fore
import pygame
import re
import time
import sys
init()
class Colors:
WHITE = Fore.WHITE
CYAN = Fore.CYAN
RED = Fore.RED
YELLOW = Fore.YELLOW
GREEN = Fore.GREEN
END = Fore.RESET
def text_to_speech(text, voice_id, output_file):
engine = pyttsx3.init()
engine.setProperty('voice', voice_id)
engine.setProperty('rate', 180)
engine.setProperty('volume', 1.0)
engine.save_to_file(text, output_file)
engine.runAndWait()
def speak(text, lang="pt-br"):
engine = pyttsx3.init()
voices = engine.getProperty('voices')
if lang == "pt-br":
for voice in voices:
if "Daniel" in voice.name:
engine.setProperty('voice', voice.id)
break
elif lang == "en-us":
for voice in voices:
if "David" in voice.name:
engine.setProperty('voice', voice.id)
break
engine.setProperty('rate', 180)
engine.say(text)
engine.runAndWait()
# Função principal simplificada
def main():
# Exibir mensagem de boas-vindas
print(Colors.WHITE + "Bem-vindo ao Sistema de Assistência Virtual." + Colors.END)
speak("Bem-vindo ao Sistema de Assistência Virtual.", lang="pt-br")
speak("Welcome to the Virtual Assistance System.", lang="en-us")
while True:
print(Colors.CYAN + "Digite o texto que deseja converter em áudio ou aperte a tecla 'Q' para sair do sistema: " + Colors.END, end='')
speak("Digite o texto que deseja converter em áudio ou aperte a tecla Q para sair do sistema.", lang="pt-br")
speak("Enter the text you want to convert to audio or press the Q key to exit the system.", lang="en-us")
text = input().strip()
if text.upper() == 'Q':
print(Colors.WHITE + "Finalizando o programa... Até a próxima!" + Colors.END)
speak("Finalizando o programa... Até a próxima!", lang="pt-br")
speak("Finishing the program... Until next time!", lang="en-us")
break
translated_text = Translator().translate(text, src='pt', dest='en').text
text_to_speech(text, 'Daniel', 'output_br.wav')
text_to_speech(translated_text, 'David', 'output_en.wav')
# Reproduzir os áudios gerados
pygame.mixer.init()
pygame.mixer.music.load('output_br.wav')
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
continue
pygame.mixer.music.load('output_en.wav')
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
continue
if __name__ == "__main__":
main()
### 'speech-to-text.py'
#### Captura de Áudio
🔹 Usa a biblioteca sounddevice para capturar áudio do microfone.
🔹 Converte o áudio capturado para um formato compreensível pelo reconhecedor de fala.
#### Reconhecimento de Fala
🔹 Utiliza a biblioteca speech_recognition para transcrever o áudio capturado para texto.
#### Interação com o Usuário
🔹 Exibe um menu para o usuário com opções de abrir o Google, Wikipedia, YouTube ou sair do programa.
🔹 Utiliza a biblioteca webbrowser para abrir links no navegador.
#### Exemplo de Código: 'speech-to-text.py'
Aqui está um trecho de código para ilustrar como capturar e transcrever áudio:
import sounddevice as sd
import speech_recognition as sr
import pyttsx3
import os
import sys
import time
import webbrowser
from colorama import init, Fore
init()
class Colors:
CYAN = Fore.CYAN
WHITE = Fore.WHITE
YELLOW = Fore.YELLOW
GREEN = Fore.GREEN
RED = Fore.RED
END = Fore.RESET
def get_audio():
samplerate = 44100
duration = 5 # segundos
device_id = 6 # ID do dispositivo de entrada (Microfone)
channels = 1 # Número de canais ajustado para 1
print(Colors.CYAN + "Listening..." + Colors.END)
audio = sd.rec(int(samplerate * duration), samplerate=samplerate, channels=channels, dtype='int16', device_id)
sd.wait() # Espera até a gravação terminar
recognizer = sr.Recognizer()
audio_data = sr.AudioData(audio.tobytes(), samplerate, channels)
try:
said = recognizer.recognize_google(audio_data, language="pt-BR")
print(Colors.GREEN + said + Colors.END)
return said.lower()
except sr.UnknownValueError:
print(Colors.RED + "Desculpe, não consegui entender." + Colors.END)
return ""
except sr.RequestError:
print(Colors.RED + "Desculpe, o serviço não está disponível" + Colors.END)
return ""
def speak(text, lang="pt-br"):
engine = pyttsx3.init()
voices = engine.getProperty('voices')
if lang == "pt-br":
for voice in voices:
if "Daniel" in voice.name:
engine.setProperty('voice', voice.id)
break
elif lang == "en-us":
for voice in voices:
if "David" in voice.name:
engine.setProperty('voice', voice.id)
break
engine.setProperty('rate', 180)
engine.say(text)
engine.runAndWait()
# Função principal simplificada
def main():
print(Colors.WHITE + "Bem-vindo ao Sistema de Assistência Virtual." + Colors.END)
speak("Bem-vindo ao Sistema de Assistência Virtual.", lang="pt-br")
speak("Welcome to the Virtual Assistance System.", lang="en-us")
while True:
print(Colors.CYAN + "Escolha uma opção:\n1. Google\n2. Wikipedia\n3. YouTube\nQ. Sair" + Colors.END, end='')
choice = input().strip().lower()
if choice == '1':
webbrowser.open("https://www.google.com")
elif choice == '2':
webbrowser.open("https://www.wikipedia.org")
elif choice == '3':
webbrowser.open("https://www.youtube.com")
elif choice == 'q':
print(Colors.WHITE + "Finalizando o programa... Até a próxima!" + Colors.END)
speak("Até a próxima!", lang="pt-br")
speak("Until next time!", lang="en-us")
time.sleep(1)
clear_terminal()
sys.exit()
## Explore o Projeto no GitHub
Para mais detalhes e acesso ao código completo, visite o repositório do projeto no GitHub:
