it-swarm.com.de

Laden Sie MP3 von Google Translate Text in Sprache herunter

Ich habe diesen Code aus dem Internet gefunden und verwendet die Text-zu-Sprach-Funktion von Google Translate mithilfe von URL. hier ist der code:

http://translate.google.com/translate_tts?tl=en&q="hello world"

Ich weiß, wie man dies in meinem vb.net anruft, aber ich weiß nicht, wie man die MP3-Datei von Google Translate speichert. Ich habe die system.speech in vb.net verwendet, um diese Funktion zu haben, aber ich muss die Rede speziell von google translate erhalten. Weiß jemand, wie er die Sounddatei mit dieser URL von Google Translate speichern kann? Vielen Dank.

20
user1169690

EDIT 2015-12-26

Seit 2015-12-21 funktioniert dieser Code nach weiteren Änderungen an der Google TTS-API nicht mehr. Wie von @ncpierson angezeigt, ist ein neuer zusätzlicher Parameter tk erforderlich, und es fällt mir schwer, zu berechnen, wie er in einem Shell-Skript berechnet wird. Ich werde diese Antwort mit einer neuen Bearbeitung überarbeiten, soweit ich kann.

Ich bin nicht sicher über Windows, aber unter Linux ist dies von der Befehlszeile aus sehr einfach. Ich benutze ein Befehlszeilenskript, um englisches Audio von Textzeichenfolgen herunterzuladen:

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

Ich mache dasselbe mit Chinesisch (das Skript ist etwas einfacher, da zwischen den Wörtern keine Leerzeichen stehen):

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

Die meisten Linux-Distributionen enthalten wget als Standard, es kann jedoch problemlos heruntergeladen werden (siehe z. B. diesen Link ).

(Danke an @ncpierson für den client=t-Parameter).

21
Bobble

Das Skript, das die Google-Übersetzungsseite ausführte, erzeugte, als ich Ihr Beispiel verwendete, eine Datei mit dem Namen "translate_tts" ohne Dateierweiterung.

Eine einfache Möglichkeit, diese Datei zu verwenden, besteht darin, Ihren Browser mitzuteilen, z. Mozilla [unter den "TOOLS" / "OPTIONEN"/ANWENDUNGEN], um Audiodateien zu speichern - in diesem Fall glaube ich, dass es sich um eine MP3, Handelt, obwohl es keine Erweiterung gibt. Wählen Sie in jedem Fall unter "AKTION" neben "Audio/Wave" oder "Audio/Mpg" die Option "DATEI SPEICHERN".

Wenn der Browser Ihre URL lädt, lädt er die Datei "translate_tts".... Herunter, unabhängig von den Daten. In Ihrem Fall würde ich den Dateinamen in "Hello-World.mp3" ändern. Auf diese Weise haben Sie nun die Datei auf Ihrer Festplatte, die das gewünschte Audio enthält, das von jedem Audio-Player abgespielt werden kann, vorzugsweise vom VLC-Media-Player, da er nahezu jedes Format abspielen kann.

Wenn Sie ein anderes Audio wünschen, z. "Auf Wiedersehen", ändern Sie einfach Ihre URLto

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

und wiederholen Sie die obigen Schritte, um die Datei als "Goodbye-World.mp3" zu speichern.

7
JCCbama

Wenn Sie dies manuell tun möchten, klicken Sie mit der rechten Maustaste auf "Speichern unter ...". Beispiel: Testen Sie Ihr eigenes Beispiel .

Ich habe keine Ahnung von vb.net, aber ich werde versuchen, einige Informationen über das bash-Skript in Linux herunterzuladen. Ich würde wget empfehlen, bis ich das vb.net-Tag sah. Überprüfen Sie diesen Thread , es könnte Ihnen eine Idee geben. Sie möchten grundsätzlich die Seite des Links herunterladen, bei der es sich um eine MP3-Datei handelt.

4

Ich habe versucht, eine Funktion zu schreiben, die genau das tut, was Sie tun, und ein wenig mehr, und nach einiger Suche konnte ich den folgenden Code erzeugen. Es macht vier Dinge:

  1. Führt eine Webanfrage aus, um die MP3-Datei von Google TTS zu erhalten
  2. Speichert die MP3-Datei in einer Datei (ich habe sie eine Ebene tiefer in das laufende Verzeichnis eingefügt)
  3. Spielt die Datei mit der Windows Media Player-COM-API ab (kann als COM-Referenz in Ihr Projekt aufgenommen werden)
  4. Speichert eine Historie der zuvor ausgesprochenen Phrasen, so dass die API nicht erneut aufgerufen werden muss, wenn eine wiederholte Phrase erscheint (das Internet ist dort, wo ich es installieren möchte, nicht so toll).

    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
Jrud

Hier ist eine in Java geschriebene Lösung:

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"));

Ausnahmebehandlung ausgelassen. IOUtils stammt von Apache Commons IO.

2
Hunternif

Ich habe eine halbautomatische Methode entwickelt, um die generierten Sprachdateien 2017 abzurufen und alle Metadaten von Google zu entfernen. Es ist für Firefox und es ist in C # geschrieben. Es liegt also nahe an dem, was Sie versuchen, aber immer noch nicht 100%. Ich habe versucht, die Dateien direkt abzurufen, aber Google hat einige ziemlich ausgefallene Sicherheitsfunktionen implementiert, die ich zu diesem Zeitpunkt nicht zu umgehen schien. Als ich dachte, ich wäre näher gekommen, schickte ich ein ReCaptcha zurück.

Ich habe es hier geöffnet: https://github.com/Goodlookinguy/FFMediaCacheGrabber und ein How-To-Video zur Verfügung gestellt.

Ich werde nicht lügen, ich fühle mich nicht gut mit dieser Antwort, da es nicht das ist, wonach du suchst, aber es ist alles, was ich zumindest tun könnte, um den Menschen zu helfen.

0