Skip to content

Latest commit

 

History

History
221 lines (159 loc) · 7.13 KB

README.md

File metadata and controls

221 lines (159 loc) · 7.13 KB

Este proyecto permite la transcripción automática de audio en tiempo real utilizando tecnologías de reconocimiento de voz. Es ideal para aplicaciones como subtitulado automático, reuniones, educación y accesibilidad. El sistema captura audio del micrófono, lo procesa en tiempo real y muestra la transcripción en la interfaz de usuario. 🚀 Características

Transcripción en tiempo real: Captura el audio y lo convierte a texto de manera inmediata.
Reconocimiento de múltiples idiomas: Detecta y transcribe varios idiomas automáticamente.
Interfaz intuitiva: Muestra el texto transcrito en tiempo real, con una interfaz amigable.
Exportación de transcripciones: Permite guardar las transcripciones en formatos como .txt o .docx.
Detección de pausas y silencios: Mejora la precisión de la transcripción al ignorar pausas largas.
Opcional: Integración con APIs de voz (Google, Azure, IBM): Mejora la precisión utilizando modelos preentrenados.
Soporte de palabras clave personalizadas: Configura palabras clave específicas para mejorar la precisión en dominios especializados.

🛠️ Tecnologías utilizadas

Python 3.x
Flask: Framework para el backend de la aplicación.
WebSockets: Para transmisión de audio en tiempo real.
SpeechRecognition: Biblioteca de Python para el reconocimiento de voz.
PyAudio: Captura de audio desde el micrófono.
HTML5 & JavaScript: Interfaz web para visualización en tiempo real.

📦 Instalación

Clona el repositorio:

git clone cd

Instala las dependencias:

pip install -r requirements.txt

Ejecuta la aplicación:

python app.py

Accede a la aplicación desde tu navegador:

http://localhost:5000

🗣️ Transcripción en tiempo real

La transcripción en tiempo real permite convertir audio hablado en texto al instante. El proceso sigue estos pasos:

Captura de audio: La aplicación utiliza PyAudio para capturar el audio del micrófono.
Procesamiento del audio: El audio se envía al backend para su procesamiento.
Reconocimiento de voz: Utiliza la biblioteca SpeechRecognition para convertir el audio en texto.
Mostrar transcripción: El texto transcrito se muestra en la interfaz web en tiempo real.

📋 Ejemplo de uso

Ejecuta la aplicación y permite el acceso al micrófono en tu navegador.
Habla cerca del micrófono y observa cómo el texto aparece en tiempo real.
Puedes pausar o detener la transcripción en cualquier momento.

🔒 Implementación de Transcripción en Tiempo Real con Tor 🛠️ Requisitos adicionales

Instalar Tor: Necesitas tener el servicio de Tor instalado y ejecutándose en tu sistema.

En openSUSE, puedes instalar Tor con:

sudo zypper install tor

Configurar Tor: Asegúrate de que el servicio de Tor esté habilitado y ejecutándose:

sudo systemctl enable tor sudo systemctl start tor

Instalar requests[socks]: Para realizar solicitudes HTTP a través de Tor, necesitamos instalar la librería requests con soporte para proxies SOCKS.

pip install requests[socks]

📦 Estructura del proyecto

Asegúrate de tener el siguiente archivo en tu proyecto Flask:

proyecto-transcripcion/ ├── app.py ├── tor_config.py ├── templates/ │ └── index.html ├── static/ │ ├── css/ │ └── js/ ├── requirements.txt └── README.md

🔧 Configuración del archivo tor_config.py

Este archivo se encargará de manejar las solicitudes a través de Tor.

import requests

Configuración del proxy de Tor

PROXIES = { 'http': 'socks5h://127.0.0.1:9050', 'https': 'socks5h://127.0.0.1:9050' }

def get(url, params=None): """ Realiza una solicitud GET a través de Tor. """ try: response = requests.get(url, params=params, proxies=PROXIES, timeout=10) response.raise_for_status() return response.json() except requests.RequestException as e: print(f"Error al conectar a través de Tor: {e}") return None

📝 Modificaciones en app.py

Integra la configuración de Tor en tu archivo principal de Flask.

from flask import Flask, render_template, request, jsonify import tor_config import speech_recognition as sr

app = Flask(name) recognizer = sr.Recognizer()

@app.route('/') def index(): return render_template('index.html')

@app.route('/transcribe', methods=['POST']) def transcribe(): if 'audio' not in request.files: return jsonify({"error": "No se ha encontrado el archivo de audio"}), 400

audio_file = request.files['audio']
with sr.AudioFile(audio_file) as source:
    audio = recognizer.record(source)

try:
    # Realizar la transcripción utilizando una API de terceros a través de Tor
    result = tor_config.get(
        "https://api.speech-to-text.com/transcribe",
        params={"audio_data": audio.get_wav_data()}
    )
    if result:
        return jsonify(result)
    else:
        return jsonify({"error": "Error al procesar la transcripción"}), 500

except Exception as e:
    return jsonify({"error": str(e)}), 500

if name == 'main': app.run(debug=True, host='0.0.0.0', port=5000)

🌐 Modificaciones en index.html

<title>Transcripción en Tiempo Real con Tor</title>

Transcripción en Tiempo Real

Transcribir
<script>
    document.getElementById('transcriptionForm').addEventListener('submit', async (e) => {
        e.preventDefault();
        const audioFile = document.getElementById('audioFile').files[0];
        const formData = new FormData();
        formData.append('audio', audioFile);

        try {
            const response = await fetch('/transcribe', {
                method: 'POST',
                body: formData
            });
            const data = await response.json();
            document.getElementById('result').innerText = data.text || data.error;
        } catch (error) {
            console.error('Error en la solicitud:', error);
        }
    });
</script>

📄 Actualización del requirements.txt

Agrega las nuevas dependencias:

Flask requests[socks] SpeechRecognition PyAudio

🛠️ Prueba del proyecto

Ejecuta el servidor Flask:

python app.py

Accede a la aplicación en tu navegador:

http://localhost:5000

Sube un archivo de audio para probar la transcripción. La solicitud se enviará a través de la red Tor, manteniendo tu conexión anónima.

⚠️ Notas importantes

Rendimiento: Usar Tor puede aumentar la latencia, lo que podría afectar la velocidad de la transcripción en tiempo real.
Privacidad: Tor proporciona anonimato, pero no garantiza privacidad absoluta. Ten cuidado al manejar datos sensibles.
Firewall: Asegúrate de que tu firewall permita el tráfico a través del puerto 9050 (puerto predeterminado de Tor).