Es posible trascribir archivo de audio a .txt? como dictado por voz con un batch

Iniciado por Juancfernandez, 20 Septiembre 2019, 03:08 AM

0 Miembros y 1 Visitante están viendo este tema.

Juancfernandez

Buenas noches. ;) ;)

Estoy aprendiendo a programar batch para facilitarme la vida ;-) ;-), y llevando adelante una idea que se me ocurrió me tope con una duda. :-\

Es posible que un batch tome un archivo .mp3 y lo traduzca a .txt? Porque arme un batch que me envía audios con el api de telegram y me gustaría que cuando ese audio contenga una palabra especifica me envié una alerta. He buscado toda la semana y no encontré nada.

MCKSys Argentina

Lo puedes encodear en base 64 y mandarlo como texto.

Cita de: Juancfernandez en 20 Septiembre 2019, 03:08 AM
Porque arme un batch que me envía audios con el api de telegram y me gustaría que cuando ese audio contenga una palabra especifica me envié una alerta.

No se a que te refieres con eso, porque va a depender directamente de la "conversion" que hagas de los datos.

Por las dudas, busca info sobre el formato mp3.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Shell Root

Creo que se refiere a que si en el audio contiene la palabra "HOLA" se envie, es decir, deberá de interpretar el sonido para encontrar la palabra.

Lo ve complejo we
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

EdePC

Saludos,

- Por lo que he estado buscando, existen servicios Cloud para esto, por ejemplo Azure: https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/batch-transcription o IBM Watson: https://speech-to-text-demo.ng.bluemix.net/

- En particular he utilizado el IBM Watson pero solo OnLine, ya que otra opción Dragon Speaking que se supone es muy bueno para ambientes OffLine pero es muy pesado XD.

Serapis

#4
Lo que yo entiendo es que pretende tomar los bytes de un fichero (*.mp3), y codificarlos (por ejemplo en base-64, UUEncode, BinHex, etc..), y guardar el contenido así convertido en un *.txt ...luego lo que haga con el fichero, será lo que sea. Tarde o temprano, se supone que tendrá que hacer la operación inversa.

Los lenguajes de script, suelen ser mas o menos limitados, así que dependerá de cual se elija para que sea más sencillo o más complicado.
La idea es ir leyendo y reconociendo los bytes, 3 bytes (3*8=24bits), se codifican en 4 caracteres (4+6=24 bits). Esos 4 caracteres cuando se guarden ocuparán 32 bits, por lo que el tamaño del fichero resultante aumentará 1/3 en tamaño. Así el tamaño total del nuevo fichero será x = ((x /3) * 4)

Si al final el lenguaje elegido es tan limitado que no permite ciertas cosas, como leer un fichero y procesar en un bucle, todavía desde ellos puede invocarse alguna funcionalidad externa... Esto es, un programa externo que recibe algunos parámetros, como comando (entre ellos la ruta del fichero y la operación deseada 'code/decode'...) y que lleva a cabo la tarea deseada, constando en el script, simplemente la llamada a dicha funcionalidad... en fin, no es insalvable...



Mmmmm... ahora releyendo, creo que lo que en realidad intenta es convertir la voz (letra) de las canciones a texto (TextToSpeech , más bien SongToSpeech) a un fichero de texto...
Si resulta ser esto... Decir que yo no conozco ningún programa que sea capaz de hacer eso bien, la voz es una cosa, cantando es otro 'cantar', algo muy distinto... hay veces que ni un humano alcanza a entender alguna palabra cantada incluso en su propio idioma.
Lo que si hay es multitud de sitios en la red, donde puedes localizar las letras de tal o cual canción e incluso del álbum completo...

@XSStringManolo

Como siempre que se da información ambigua cada uno entiende una cosa jajaja.
Yo entendí que quiere trabajar con los metadatos tipo; Album, Artista, Titulo, Fecha.


Juancfernandez

Perdón, me exprese mal. Estoy tratando de hacer un batch que transcriba un audio x.mp3 de una reunión por ejemplo a un .txt como funciona el dictado de google.

Generalmente los audios que quiero transcribir no son mas de 60 segundos. Encontré por la web algunos comandos en python pero estoy aprendiendo batch y uso windows y se me complica mucho. Si no es posible tendre que empezar a estudiar python

Seguramente debería empezar por el comando CURL.

Juancfernandez

Cita de: Shell Root en 20 Septiembre 2019, 17:26 PM
Creo que se refiere a que si en el audio contiene la palabra "HOLA" se envie, es decir, deberá de interpretar el sonido para encontrar la palabra.

Lo ve complejo we

Claro, eso mismo quiero hacer

@XSStringManolo

#8
Cita de: Juancfernandez en 20 Septiembre 2019, 23:55 PM
Perdón, me exprese mal. Estoy tratando de hacer un batch que transcriba un audio x.mp3 de una reunión por ejemplo a un .txt como funciona el dictado de google.

Generalmente los audios que quiero transcribir no son mas de 60 segundos. Encontré por la web algunos comandos en python pero estoy aprendiendo batch y uso windows y se me complica mucho. Si no es posible tendre que empezar a estudiar python

Seguramente debería empezar por el comando CURL.
Tu viste los malos que son los subtítulos en videos de Youtube generados automáticamente? Y en muchos casos de Youtuber son gente que hace énfasis en la vocalización, modulación de voz, graban en entorno muy silencioso, habitación y algunos estudio, con muy buenas calidades de audio, con micros que cuestan 1000€+ y a 5 centímetros de ellos.
Y aún así el algoritmo de Youtube no pilla ni la mitad de las palabras correctamente.

Lo siento pero no vas a poder hacer algo así, y menos de audios de una reunión. Contrata a alguien para que lo haga con un contrato de confidencialidad.

Podrías poner el audio contra un sistema como los asistentes de voz que están bastante avanzados, pero el problema que veo es que no tienes forma de comprobar que lo que está traduciendo sea lo correcto. Por eso comento lo de ML.

Pd: Batch no está pensado para esas cosas. Opta por alguno de los lenguajes top 10 de popularidad. Mírate las librerías que tienen sobre el tema.