Skip to content

Commit

Permalink
correção de detecção automatica
Browse files Browse the repository at this point in the history
  • Loading branch information
Fábio Cavalcanti committed Jan 8, 2025
1 parent f558542 commit 2a296d7
Showing 1 changed file with 39 additions and 6 deletions.
45 changes: 39 additions & 6 deletions services.py
Original file line number Diff line number Diff line change
Expand Up @@ -203,27 +203,60 @@ async def transcribe_audio(audio_source, apikey=None, remote_jid=None, from_me=F
# Remover @s.whatsapp.net do ID para buscar no cache
contact_id = remote_jid.split('@')[0]

# 1. Tentar obter idioma configurado manualmente
# 1. Primeiro tentar obter idioma configurado manualmente
contact_language = storage.get_contact_language(contact_id)
if contact_language:
storage.add_log("DEBUG", "Idioma do contato encontrado", {
storage.add_log("DEBUG", "Usando idioma configurado manualmente", {
"contact_language": contact_language,
"from_me": from_me,
"remote_jid": remote_jid,
"is_private": is_private
})
# 2. Se não houver idioma configurado manualmente, verificar cache
# 2. Se não houver configuração manual e detecção automática estiver ativa
elif storage.get_auto_language_detection():
# Verificar cache primeiro
cached_lang = storage.get_cached_language(contact_id)
if cached_lang:
contact_language = cached_lang.get('language')
storage.add_log("DEBUG", "Usando idioma em cache", {
storage.add_log("DEBUG", "Usando idioma do cache", {
"contact_language": contact_language,
"auto_detected": True
})

# Se não há cache ou está expirado, fazer detecção
elif not from_me: # Só detecta em mensagens recebidas
try:
# Realizar transcrição inicial sem idioma específico
data = aiohttp.FormData()
data.add_field('file', open(audio_source, 'rb'), filename='audio.mp3')
data.add_field('model', 'whisper-large-v3')

async with aiohttp.ClientSession() as session:
async with session.post(url, headers=groq_headers, data=data) as response:
if response.status == 200:
initial_result = await response.json()
initial_text = initial_result.get("text", "")

# Detectar idioma do texto transcrito
detected_lang = await detect_language(initial_text)

# Salvar no cache E na configuração do contato
storage.cache_language_detection(contact_id, detected_lang)
storage.set_contact_language(contact_id, detected_lang)

contact_language = detected_lang
storage.add_log("INFO", "Idioma detectado e configurado", {
"language": detected_lang,
"remote_jid": remote_jid,
"auto_detected": True
})
except Exception as e:
storage.add_log("WARNING", "Erro na detecção automática de idioma", {
"error": str(e),
"remote_jid": remote_jid
})

if not contact_language:
storage.add_log("DEBUG", "Nenhum idioma configurado para o contato", {
storage.add_log("DEBUG", "Usando idioma padrão do sistema", {
"from_me": from_me,
"remote_jid": remote_jid,
"is_private": is_private,
Expand Down

0 comments on commit 2a296d7

Please sign in to comment.