User Tools

Site Tools


informatica:speech_to_text

Línea de comandos con docker

Speech to text

https://github.com/alphacep/vosk-api

https://alphacephei.com/vosk/install

apt-get install python-is-python3 python-is-python3 python3-pip ffmpeg
pip3 install vosk
vosk-transcriber -l es -i fichero.wav -o texto.txt

Dockerfile

FROM debian

RUN apt-get update && apt-get install -y python-is-python3 python-is-python3 python3-pip ffmpeg
RUN pip3 install vosk

WORKDIR /audio

ENTRYPOINT ["bash", "-c", "vosk-transcriber -l es -i $1 -o texto.txt >/dev/null 2>&1 && cat texto.txt", "--"]
docker run --rm -v "$PWD":/audio local/speechtotext fichero.wav

Como servicio web

Creamos el fichero vosk.py que levantará un servidor web que al hacer un post de un fichero de audio, devuelve el texto. Lo levantamos con el comando:

python3 vosk.py
from flask import Flask, request, jsonify
import subprocess

app = Flask(__name__)

@app.route('/transcribir', methods=['POST'])
def transcribir_audio():
    archivo_audio = request.files['audio']
    archivo_audio.save('audio.wav')
    subprocess.run(['vosk-transcriber', '-l', 'es', '-i', 'audio.wav', '-o', 'texto.txt'])
    with open('texto.txt', 'r') as f:
        texto = f.read()
    return jsonify({'texto': texto})

if __name__ == '__main__':
    app.run(debug=True,host='0.0.0.0',port=3000)

Se envía un audio con este comando y te devuelve el texto:

curl -X POST -F 'audio=@a.ogg' http://10.103.0.1:3000/transcribir

Servicio de Google

import speech_recognition as sr
import time

# Creamos un objeto Recognizer
r = sr.Recognizer()

# Abrimos el archivo de audio y lo pasamos al objeto AudioFile
with sr.AudioFile('audio.wav') as source:
    # Leemos el audio del archivo
    audio = r.record(source)

# Convertimos el audio a texto
text = r.recognize_google(audio, language='es-ES')

# Generamos un nombre de archivo único para el texto
filename = 'texto_' + str(int(time.time())) + '.txt'

# Guardamos el texto en un archivo de texto
with open(filename, 'w') as f:
    f.write(text)

API TELEGRAM

/dades/web/htdocs/apitelegram.lobo99.info/speechtotext/bot.php

Graba el archivo en el file system como AwAxxxxxxxx.ogg

Lo pasa a http://vosk.lobo99.com/transcribir

informatica/speech_to_text.txt · Last modified: 2023/04/14 08:31 by jose