Скачать MP3 с Google Перевод текста в речь - PullRequest
21 голосов
/ 06 февраля 2012

Я нашел этот код в Интернете, и он использует функцию преобразования текста в речь 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?Спасибо.

Ответы [ 6 ]

21 голосов
/ 11 декабря 2012

РЕДАКТИРОВАТЬ 2015-12-26

С 2015-12-21 этот код больше не работает после дальнейших изменений в API Google TTS.Как указывает @ncpierson, требуется новый дополнительный параметр tk, и мне трудно разобраться, как рассчитать его в сценарии оболочки.Я пересмотрю этот ответ с новым редактированием как / когда смогу.

Я не уверен насчет Windows, но в Linux это очень просто из командной строки.Я использую сценарий командной строки для загрузки английского аудио текстовых строк:

#!/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=$*"

Я делаю то же самое с китайским языком (сценарий немного проще, потому что нет пробелов для разбора между словами):

#!/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 за * 1020)* параметр).

7 голосов
/ 26 декабря 2012

Скрипт, который запускала страница google translate, когда я использовал ваш пример, генерировал файл с именем "translate_tts" без расширения файла.

Один из простых способов использовать этот файл - сообщить браузеру, например:Mozilla [в разделе «ИНСТРУМЕНТЫ» / «ОПЦИИ» / «ПРИЛОЖЕНИЯ»] для сохранения аудиофайлов - в этом случае я считаю, что это MP3, хотя расширения нет.В любом случае, выберите параметр «ACTION» рядом с «audio / wave» или «audio / Mpg» для «SAVE FILE».

Когда браузер загружает ваш URL, он загружает файл с именем «translate_tts», независимо от того,что это за данныеИтак, в вашем случае я бы изменил имя файла на «Hello-World.mp3».Таким образом, теперь у вас есть файл на жестком диске, содержащий желаемое аудио, которое может быть воспроизведено любым аудиоплеером, предпочтительно, медиаплеером VLC, поскольку он будет воспроизводить практически любой формат.

Конечно, если вы хотитедругой звук, например "Goodbye-World", вы просто меняете свой URL на

http://translate.google.com/translate_tts?tl=en&q="Goodbye-World"

и повторяете описанные выше шаги, чтобы сохранить файл как "Goodbye-World.mp3" .

4 голосов
/ 30 сентября 2012

Если вы хотите сделать это вручную, щелкните правой кнопкой мыши «Сохранить как ...», чтобы добиться цели.Пример: протестируйте свой собственный пример .

Я понятия не имею о vb.net, но я собираюсь попытаться загрузить несколько бит информации через скрипт bash в linux.Я собирался рекомендовать использовать wget, пока не увидел тег vb.net.Отметьте эту ветку , она может дать вам некоторое представление.Вы в основном хотите скачать страницу ссылки, которая является mp3.

2 голосов
/ 29 декабря 2014

Я пытался написать функцию, которая делает именно то, что делает ваша, плюс немного больше, и после некоторого поиска я смог создать следующий код.Он выполняет четыре действия:

  1. Запрашивает ли веб-запрос на получение файла MP3 от Google TTS
  2. Сохраняет MP3 в файл (я поместил его на 1 уровень глубже в рабочий каталог)
  3. Воспроизводит файл с помощью COM API проигрывателя Windows Media (может быть включен в качестве ссылки COM в вашем проекте)
  4. Сохраняет историю ранее произнесенных фраз, поэтому он не имеетснова нажать 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
    
2 голосов
/ 17 июля 2013

Вот решение, написанное на 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.

0 голосов
/ 17 июня 2017

В 2017 году я разработал полуавтоматический способ получения сгенерированных речевых файлов и удаления всех метаданных Google.Это для Firefox и написано на C #.Так что это близко к тому, что вы пытаетесь сделать, но все же не на 100%.Я пытался получить файлы напрямую, но Google внедрил некоторые довольно причудливые функции безопасности, которые я не мог обойти в настоящее время.Когда я подумал, что подошел ближе, он отправил мне обратно ReCaptcha.

Я открыл его здесь: https://github.com/Goodlookinguy/FFMediaCacheGrabber и предоставил видео с практическими рекомендациями.

Не буду лгать, мне не очень нравится этот ответ, потому что это не то, что вы ищете, но это все, что я мог сделать, по крайней мере сейчас, чтобы помочь людям.

...