Скачать mp3 из google перевести текст в речь
Я нашел этот код из Интернета, и он использует перевод текста в текстовом редакторе Google, используя url. вот код:
http://translate.google.com/translate_tts?tl=en&q="hello world"
Я знаю, как назвать это в моем vb.net, но я не знаю, как сохранить mp3 файл из google translate. Я использовал system.speech в vb.net, чтобы иметь эту возможность, но мне особенно нужно получить речь из google translate. так, кто-нибудь знает, как сохранить звуковой файл из google translate, используя этот url? спасибо.
Ответы
Ответ 1
EDIT 2015-12-26
По состоянию на 2015-12-21 этот код больше не работает после дальнейших изменений в API TTS Google. Как указано @ncpierson, требуется новый дополнительный параметр tk
, и мне сложно определить, как его вычислить в оболочке script. Я буду пересматривать этот ответ с помощью нового редактирования как/когда могу.
Я не уверен в Windows, но в Linux это очень легко из командной строки. Я использую командную строку script для загрузки английского текста текстовых строк:
#!/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=$*"
Я делаю то же самое с китайским (script немного проще, потому что нет пробелов для разбора слов):
#!/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"
Большинство дистрибутивов Linux включают в себя стандарт wget, но его можно легко загрузить (см., например, эта ссылка).
(Благодаря параметру @ncpierson для параметра client=t
).
Ответ 2
script, который запускал страница перевода Google, когда я использовал ваш пример, создал файл
называемый "translate_tts" без расширения файла.
Один простой способ использовать этот файл - указать браузеру, например. Mozilla [в разделе "ИНСТРУМЕНТЫ" /
"ОПЦИИ" /ПРИЛОЖЕНИЯ], чтобы сохранить аудиофайлы - в этом случае я считаю, что это MP3,
даже если нет расширения. В любом случае выберите опцию "ACTION" рядом с аудио/волной или аудио /Mpg на "SAVE FILE".
Когда браузер загружает ваш URL-адрес, он загружает файл под названием "translate_tts",
независимо от данных. Итак, в вашем случае я бы изменил имя файла на
"Привет-World.mp3". Таким образом, у вас теперь есть файл на вашем жестком диске, содержащий требуемый звук, который может воспроизводиться любым аудиоплеером, предпочтительно медиаплеер VLC, поскольку он будет
играть практически в любом формате.
Конечно, если вам нужен другой звук, например. "Goodbye-World", вы просто меняете свой URL-адрес
к
http://translate.google.com/translate_tts?tl=en&q="Goodbye-World"
и повторите описанные выше шаги, чтобы сохранить файл как "Goodbye-World.mp3".
Ответ 3
Если вы хотите сделать это вручную, щелкните правой кнопкой мыши "Сохранить как...". Пример: проверить свой собственный пример.
Я понятия не имею о vb.net, но я попытаюсь загрузить несколько бит информации через bash script в linux. Я собирался рекомендовать использовать wget, пока не увижу тег vb.net. Проверьте этот поток, это может дать вам некоторую идею. Вы в основном хотите загрузить страницу ссылки, которая является mp3.
Ответ 4
Здесь решение, написанное на 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"));
Обработка исключений опущена. IOUtils происходит от Apache Commons IO.
Ответ 5
Я пытался написать функцию, которая делает именно то, что у вас есть, плюс немного больше, и после некоторых поисков я смог создать следующий код. Это делает четыре вещи:
- Получает ли веб-запрос получение файла MP3 из Google TTS
- Сохраняет MP3 в файл (я помещаю его на один слой глубже в рабочий каталог)
- Воспроизведение файла с использованием медиа-проигрывателя Windows COM API (может быть включено в качестве ссылки COM в вашем проекте).
-
Сохраняет историю ранее высказанных фраз, поэтому ему не нужно ударять API снова, когда появляется повторяющаяся фраза (в Интернете не очень хорошо, где я планирую установить это).
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
Ответ 6
Я разработал полуавтоматический способ получения сгенерированных речевых файлов в 2017 году и разделил все метаданные Google. Это для Firefox и написано на С#. Так что это близко к тому, что вы пытаетесь сделать, но все же не 100%. Я попытался получить файлы напрямую, но Google реализовал некоторые довольно причудливые функции безопасности, которые я, похоже, не мог обойти в это время. Когда я подумал, что подошел, он отправил мне ReCaptcha.
Я открыл его здесь: https://github.com/Goodlookinguy/FFMediaCacheGrabber и также предоставил практическое видео.
Не ложь, я не чувствую себя прекрасно в этом ответе, поскольку это не то, что вы ищете, но все, что я мог сделать, по крайней мере, сейчас, чтобы помочь людям.