🎤 Reconhecimento de Fala
"O robô ouviu tudo! Agora ele responde" — implementando Speech-to-Text com gírias paranaenses e modo Libras textual.
⬇️⬇️⬇️
"FALA AÍ!"
Abertura · 10min
Vídeo: como funciona reconhecimento de voz (explicação simples do Speech-to-Text).
Conceituação · 15min
Dicionário de gírias paranaenses — turma contribui (vixi, piá, guria, ó o trem, etc.).
Codificação · 40min
Implementar speech_recognition + dicionário de respostas + modo Libras textual.
Teste · 20min
Alunos falam frases no microfone; robô responde com meme e traduz para Libras textual.
Fechamento · 15min
Debate ético: "O robô pode guardar o que ouviu? Isso é fofoca ou dado?"
Adaptações inclusivas
Alunos com fala reduzida podem usar input de texto manual. Lista de frases prontas disponível.
😲 expressão de surpresa
🧒 garoto, rapaz
👧 garota, moça
👀 olha a coisa, presta atenção
🤝 companheiro, amigo
🤪 coisa louca
🐴 expressão de espanto
😮 expressão de surpresa
# -*- coding: utf-8 -*-
# ============================================================
# ROBÔ FOFOQUEIRO DA ACESSIBILIDADE - AULA 3: RECONHECIMENTO DE FALA
# "O robô ouviu tudo! Agora ele responde"
# ============================================================
import speech_recognition as sr
from datetime import datetime
import random
import os
import time
# ============================================================
# LISTA DE RESPOSTAS IRREVERENTES
# ============================================================
RESPOSTAS_IRREVERENTES = [
"Ah pronto, agora tão falando '{}'... vou contar pra todo mundo",
"Isso foi profundo... ou não, sei lá, sou só um robô fofoqueiro",
"Anotado! '{}' - disse o aluno misterioso",
"Huuum, interessante... vou salvar no meu banco de fofocas",
"😈 Hehehe... '{}'... isso vai render altas fofocas!",
"Conta mais, conta mais... tô gravando tudo aqui 🎙️",
"Vixi, falou '{}'! Égua, isso é bagulho doido!",
"Piá, cê tá ligado que eu anotei isso né? '{}'",
"Ó o trem, guria! '{}' - anotado com sucesso!"
]
# ============================================================
# DICIONÁRIO DE GÍRIAS PARANAENSES
# ============================================================
DICIONARIO_GIRIAS = {
"vixi": "😲 expressão de surpresa ou susto",
"piá": "🧒 garoto, rapaz",
"guria": "👧 garota, moça",
"ó o trem": "👀 olha a coisa, presta atenção",
"tchê": "🤝 companheiro, amigo",
"bagulho doido": "🤪 coisa louca, situação complicada",
"égua": "🐴 expressão de espanto",
"trem": "📦 coisa, objeto",
"bah": "😮 expressão de surpresa",
"mas qué isso": "😯 expressão de indignação"
}
# ============================================================
# DICIONÁRIO DE TRADUÇÃO PARA LIBRAS TEXTUAL (EMOJI)
# ============================================================
LIBRAS_EMOJI = {
"bom dia": "🤟 BOM DIA 🤟",
"boa tarde": "🌅 BOA TARDE 🌅",
"boa noite": "🌙 BOA NOITE 🌙",
"ajuda": "🆘 AJUDA 🆘",
"obrigado": "🙏 OBRIGADO 🙏",
"amigo": "🤝 AMIGO 🤝",
"escola": "📚 ESCOLA 📚",
"professor": "👨🏫 PROFESSOR 👨🏫",
"fofoca": "👂 FOFOCA 👂",
"segredo": "🤫 SEGREDO 🤫",
"amor": "❤️ AMOR ❤️",
"triste": "😢 TRISTE 😢",
"feliz": "😊 FELIZ 😊",
"legal": "👍 LEGAL 👍",
"ruim": "👎 RUIM 👎",
"programar": "💻 PROGRAMAR 💻",
"python": "🐍 PYTHON 🐍",
"robô": "🤖 ROBÔ 🤖"
}
# ============================================================
# FUNÇÃO PARA SALVAR FOFOCO NO ARQUIVO
# ============================================================
def salvar_fofoca(texto):
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
with open("fofocas.txt", "a", encoding="utf-8") as arquivo:
arquivo.write(f"[{timestamp}] - {texto}\n")
print(f"💾 Fofoca salva com sucesso!")
# ============================================================
# FUNÇÃO PARA TRADUZIR PARA LIBRAS TEXTUAL
# ============================================================
def traduzir_libras_textual(texto):
texto_lower = texto.lower()
for palavra, traducao in LIBRAS_EMOJI.items():
if palavra in texto_lower:
return texto.replace(palavra, traducao)
return texto
# ============================================================
# FUNÇÃO PARA GERAR RESPOSTA COM GÍRIAS
# ============================================================
def gerar_resposta_com_girias(texto):
texto_lower = texto.lower()
for giria, significado in DICIONARIO_GIRIAS.items():
if giria in texto_lower:
return f"Vixi, você usou '{giria}'! {significado} Égua, sabia nem que existia isso! 🤯"
return random.choice(RESPOSTAS_IRREVERENTES).format(texto)
# ============================================================
# FUNÇÃO PRINCIPAL DE RECONHECIMENTO DE FALA
# ============================================================
def escuta_fofoqueiro(modo_libras=False):
print("\n🎤 Robô Fofoqueiro: 'Tô te ouvindo... fala aí que eu tô anotando tudo'")
recognizer = sr.Recognizer()
recognizer.energy_threshold = 300
recognizer.pause_threshold = 0.8
try:
with sr.Microphone() as source:
print("🔴 Gravando... fale alguma coisa!")
recognizer.adjust_for_ambient_noise(source, duration=0.5)
audio = recognizer.listen(source, timeout=5, phrase_time_limit=5)
print("✅ Áudio capturado! Processando...")
try:
texto = recognizer.recognize_google(audio, language="pt-BR")
print(f"👂 OUVI ALGO: {texto}")
except sr.UnknownValueError:
print("❌ Google não entendeu o áudio!")
return None
except sr.RequestError as e:
print(f"❌ Erro na requisição ao Google: {e}")
return None
except sr.WaitTimeoutError:
print("⏰ Tempo esgotado! Você demorou para começar a falar.")
return None
except Exception as e:
print(f"❌ Erro inesperado: {e}")
return None
if texto:
if modo_libras:
texto_original = texto
texto = traduzir_libras_textual(texto)
if texto != texto_original:
print(f"🦾 TRADUÇÃO LIBRAS: {texto}")
salvar_fofoca(texto)
resposta = gerar_resposta_com_girias(texto)
print(f"🤖 {resposta}")
return texto
return None
# ============================================================
# FUNÇÃO PARA TESTE SIMULADO (SEM MICROFONE)
# ============================================================
def teste_simulado(modo_libras=False):
print("\n" + "="*60)
print("🧪 MODO TESTE SIMULADO - Robô Fofoqueiro em ação!")
print("="*60)
frases_teste = [
"bom dia professor, como você está?",
"preciso de ajuda com o exercício",
"você ouviu a última fofoca da escola?",
"estou feliz hoje!",
"isso é um segredo entre nós",
"vixi, que bagulho doido!",
"ó o trem, piá!"
]
print("\n🎭 Simulando reconhecimento de fala com frases pré-definidas:\n")
for i, frase_simulada in enumerate(frases_teste, 1):
print(f"📝 Teste {i}/{len(frases_teste)}:")
print(f" 🎭 Frase simulada: '{frase_simulada}'")
texto = frase_simulada
print(f"👂 OUVI ALGO: {texto}")
if modo_libras:
texto_original = texto
texto = traduzir_libras_textual(texto)
if texto != texto_original:
print(f"🦾 TRADUÇÃO LIBRAS: {texto}")
salvar_fofoca(f"[SIMULADO] {texto}")
resposta = gerar_resposta_com_girias(texto)
print(f"🤖 {resposta}")
print("-"*40)
time.sleep(1)
print("\n✅ Teste simulado concluído!")
print("📁 Verifique o arquivo 'fofocas.txt' para ver as fofocas salvas!")
# ============================================================
# FUNÇÃO PRINCIPAL
# ============================================================
def main():
print("="*60)
print("🤖 ROBÔ FOFOQUEIRO - AULA 3: RECONHECIMENTO DE FALA")
print("="*60)
print("\n📌 Como você quer testar o robô?")
print("1 - Teste com microfone real (precisa de microfone)")
print("2 - Teste simulado (usa frases pré-definidas, recomendado para Colab)")
print("3 - Apenas ver fofocas salvas")
try:
opcao = input("\n👉 Escolha uma opção (1/2/3): ").strip()
modo_libras_input = input("🦾 Ativar tradução para Libras textual? (s/n): ").strip().lower()
modo_libras = modo_libras_input == 's'
if opcao == '1':
print("\n🎙️ Iniciando teste com microfone real...")
print("Pressione Ctrl+C para parar...")
try:
while True:
texto = escuta_fofoqueiro(modo_libras=modo_libras)
if texto:
print(f"✅ Texto salvo: {texto}")
print("\n" + "-"*40)
time.sleep(1)
except KeyboardInterrupt:
print("\n\n👋 Robô Fofoqueiro desligado! Até a próxima fofoca!")
elif opcao == '2':
teste_simulado(modo_libras=modo_libras)
elif opcao == '3':
try:
with open("fofocas.txt", "r", encoding="utf-8") as arquivo:
print(arquivo.read())
except FileNotFoundError:
print("📭 Nenhuma fofoca salva ainda!")
else:
print("❌ Opção inválida! Executando teste simulado padrão...")
teste_simulado(modo_libras=modo_libras)
except Exception as e:
print(f"❌ Erro: {e}")
teste_simulado(modo_libras=False)
if __name__ == "__main__":
main()
print("\n" + "="*60)
print("👋 Robô Fofoqueiro encerrado!")
print("😈 Lembre-se: tudo que você falou está salvo em 'fofocas.txt'")
print("="*60)
Checklist de avaliação - Aluno
- Conseguiu implementar o reconhecimento de fala funcional?
- O robô responde com gírias paranaenses corretamente?
- Modo Libras textual está traduzindo palavras-chave?
- As falas são salvas no arquivo 'fofocas.txt'?
- Participou do debate ético sobre privacidade?
- Testou com microfone real ou modo simulado?
Prazos & alertas
Entrega do projeto: 30/04/2026
Validar reconhecimento de fala antes do próximo encontro.
Plano de Aula - Docente
Códigos BNCC: EM13LGG101, EM13LGG304, EM13LP16 | RCP - Paraná: Língua Portuguesa - Oralidade, Pensamento Computacional - Algoritmos
Materiais: Chromebooks, contas Google, projetor, microfones.
Dicas de mediação
- Use a analogia "Robô fofoqueiro precisa de ouvidos (microfone) e cérebro (algoritmo)".
- Peça que os alunos criem novas gírias para adicionar ao dicionário.
- Promova um "Torneio de fofoca controlada" para testar o robô.
- Debate ético: "O robô pode guardar o que ouviu? Isso é fofoca ou dado?"
- Para alunos com fala reduzida, use input de texto manual (modo alternativo).
Kit do Professor
Simulador de Reconhecimento de Fala
"Vixi, ainda não falou nada, piá! Fala alguma coisa aí!"