vb.net - traducir - traductor google ingles español
Descargar MP3 de Google Translate texto a voz (6)
EDITAR 2015-12-26
A partir del 2015-12-21, este código ya no funciona después de cambios adicionales en la API de Google TTS. Según lo indicado por @ncpierson, se requiere un nuevo parámetro tk
adicional, y estoy teniendo dificultades para calcular cómo calcularlo en un script de shell. Revisaré esta respuesta con una nueva edición cuando pueda.
No estoy seguro de Windows, pero en Linux esto es muy fácil desde la línea de comandos. Utilizo un script de línea de comandos para descargar audio en inglés de cadenas de texto:
#!/bin/bash
# write an English text string as an audio file using Google Translate
# usage: en2audio.sh <text>
wget -q -U Mozilla -O "$*.mp3" "http://translate.google.com/translate_tts?ie=UTF-8&client=t&tl=en&q=$*"
Hago lo mismo con el chino (el guión es un poco más sencillo porque no hay espacios para analizar entre las palabras):
#!/bin/bash
# write a Chinese text string as an audio file using Google Translate
# usage: zh2audio.sh <text>
wget -q -U Mozilla -O $1.mp3 "http://translate.google.com/translate_tts?ie=UTF-8&client=t&tl=zh&q=$1"
La mayoría de las distribuciones de Linux incluyen wget como estándar, pero se pueden descargar fácilmente (ver, por ejemplo, este enlace ).
(Gracias a @ncpierson por el parámetro client=t
).
Encontré este código en Internet y utiliza la capacidad de conversión de texto a voz de Google mediante la URL. Aquí está el código:
http://translate.google.com/translate_tts?tl=en&q="hello world"
Sé cómo llamar a esto en mi vb.net pero no sé cómo guardar el archivo MP3 de Google Translate. Utilicé system.speech en vb.net para tener esta capacidad, pero específicamente necesito obtener el discurso del traductor de google. Entonces, ¿alguien sabe cómo guardar el archivo de sonido de Google Translate usando esa URL? Gracias.
Aquí hay una solución escrita en Java:
URL url = new URL("http://translate.google.com/translate_tts?tl=en&q=/"hello world/"");
HttpURLConnection httpcon = (HttpURLConnection) url.openConnection();
httpcon.addRequestProperty("User-Agent", "anything");
IOUtils.copy(httpcon.getInputStream(), new FileOutputStream("output.mp3"));
Manejo de excepciones omitido. IOUtils proviene de Apache Commons IO.
He producido una forma semiautomática de adquirir los archivos de voz generados en 2017 y eliminar todos los metadatos de Google. Es para Firefox y está escrito en C #. Así que está cerca de lo que estás tratando de hacer, pero aún no es del 100%. Intenté obtener los archivos directamente, pero Google ha implementado algunas características de seguridad bastante sofisticadas que parece que no podía manejar en este momento. Cuando pensé que me había acercado, me envió un ReCaptcha.
Lo he abierto aquí: https://github.com/Goodlookinguy/FFMediaCacheGrabber y también proporcioné un video instructivo.
No voy a mentir, no me siento muy bien con esta respuesta ya que no es lo que estás buscando, pero es todo lo que puedo hacer, al menos por ahora, para ayudar a la gente.
Intenté escribir una función que hace exactamente lo que hace la suya, más un poco más, y después de algunas búsquedas pude producir el siguiente código. Hace cuatro cosas:
- Hace una solicitud web para obtener el archivo MP3 de google TTS
- Guarda el MP3 en un archivo (lo coloco 1 capa más profundamente en el directorio en ejecución)
- Reproduce el archivo utilizando la API COM de Windows Media Player (puede incluirse como una referencia COM en su proyecto)
Almacena un historial de frases pronunciadas anteriormente para que no tenga que volver a golpear la API cuando aparece una frase repetida (Internet no es muy bueno donde planeo instalar esto).
Imports System.Net Imports System.IO Imports System.Text Dim MP As New MediaPlayer.MediaPlayer Private Sub SaySomething(TTS As String) If Not TTS = "" Then If Not System.IO.File.Exists(Environment.CurrentDirectory.ToString() + "/TTS/" + TTS + ".mp3") Then Dim WR As HttpWebRequest = HttpWebRequest.Create("http://translate.google.com/translate_tts?tl=en&q=""" + TTS + """") Dim response As HttpWebResponse = CType(WR.GetResponse(), HttpWebResponse) Dim receiveStream As Stream = response.GetResponseStream() Dim readStream As New StreamReader(receiveStream, Encoding.UTF8) If Not System.IO.Directory.Exists(Environment.CurrentDirectory.ToString() + "/TTS") Then System.IO.Directory.CreateDirectory(Environment.CurrentDirectory.ToString() + "/TTS") End If Dim fs As New FileStream(Environment.CurrentDirectory.ToString() + "/TTS/" + TTS + ".mp3", FileMode.Create) readStream.BaseStream.CopyTo(fs) fs.Close() fs.Dispose() readStream.Dispose() receiveStream.Dispose() End If MP.Open(Environment.CurrentDirectory.ToString() + "/TTS/" + TTS + ".mp3") End If End Sub
La secuencia de comandos que ejecutó la página de Google Translate, cuando utilicé su ejemplo, produjo un archivo llamado "translate_tts" sin extensión de archivo.
Una forma fácil de usar este archivo es indicarle a su navegador, por ejemplo, Mozilla [debajo de "HERRAMIENTAS" / "OPCIONES" / APLICACIONES], para guardar archivos de audio, en este caso creo que es un MP3, aunque no haya una extensión . En cualquier caso, seleccione la opción debajo de "ACCIÓN" junto a audio / wave o audio / Mpg para "GUARDAR ARCHIVO".
Cuando el navegador carga su URL, descarga el archivo llamado "translate_tts", sin importar cuáles sean los datos. Por lo tanto, en su caso, cambiaría el nombre del archivo a "Hello-World.mp3". De esa manera, ahora tiene el archivo en su disco duro, que contiene el audio que desea, que puede reproducir cualquier reproductor de audio, preferiblemente el reproductor de medios VLC, ya que reproducirá casi cualquier formato.
Por supuesto, si desea un audio diferente, por ejemplo, "Adiós al mundo", simplemente cambie su URL a
http://translate.google.com/translate_tts?tl=en&q="Goodbye-World"
y repita los pasos anteriores para guardar el archivo como "Goodbye-World.mp3".
Si quieres hacerlo manualmente, haz clic derecho en "guardar como ..." para resolver el problema. Ejemplo: prueba tu propio ejemplo .
No tengo idea de vb.net, pero voy a intentar descargar varios bits de información a través de bash script en linux. Iba a recomendar el uso de wget hasta que viera la etiqueta vb.net. Revisa este hilo , podría darte una idea. Básicamente quieres descargar la página del enlace, que es un mp3.