Googleのテキストを音声に変換するMP3をダウンロード

私はインターネットからこのコードを見つけ、URLを使ってGoogle translateのテキストを音声に変換する機能を使用しています。ここにコードです:

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

私はvb.netでこれを呼び出す方法を知っていますが、Google翻訳からMP3ファイルを保存する方法はわかりません。私はvb.netのsystem.speechを使ってこの機能を持っていましたが、私は特にGoogle翻訳からスピーチを得る必要があります。そのURLを使用してGoogle翻訳からサウンドファイルを保存する方法を知っている人はいますか?ありがとう。

20
私はこれをまっすぐにしましょう、あなたはGoogleからttsのmp3(またはwaveファイル)をダウンロードし、あなたのアプリ、ランタイムでそれを再生したいですか?
追加された 著者 John Demetriou,
誰かがこれを理解しましたか?私はある言語の発音をサイトに埋め込みたいのですが。
追加された 著者 CMSCSS,
これまでどんなコードを持っていますか?
追加された 著者 Mooing Duck,
@CMSCSSは私の答えをチェックする。
追加された 著者 Francisco Presencia,

6 答え

EDIT 2015-12-26

2015-12-21現在、このコードはGoogle TTS APIをさらに変更しても機能しなくなりました。 @ncpiersonに示されているように、新しい追加パラメータ tk が必要です。シェルスクリプトでそれを計算する方法は苦労しています。できるだけ早く新しい編集でこの回答を修正します。

Windowsについてはわかりませんが、Linuxではコマンドラインから非常に簡単です。私はコマンドラインスクリプトを使ってテキスト文字列の英語の音声をダウンロードします:

#!/bin/bash
# write an English text string as an audio file using Google Translate
# usage: en2audio.sh 
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 
wget -q -U Mozilla -O $1.mp3 "http://translate.google.com/translate_tts?ie=UTF-8&client=t&tl=zh&q=$1"

ほとんどのLinuxディストリビューションにはwgetが標準で含まれていますが、簡単にダウンロードできます(このリンク)。

client = t パラメータの@ncpiersonに感謝します)。

21
追加された
これらのサービスはキャプチャ入力を必要とするようになりましたので、コマンドラインメソッドは機能しません。サービスは無料で利用できますが、キャプチャコードを入力する必要があります。ウェブブラウザが必要です。
追加された 著者 Bobble,
@ncpiersonあなたのコメントをありがとう。私は変更に対応するために私の答えを(改めて...)修正しました。
追加された 著者 Bobble,
@ncpierson素晴らしいリンクですが、私はまだこれを頭に入れようとしています。どこで/どのようにAPIの変更を見つけましたか?それはどこかに公開されていますか?私は私の答えでスクリプトを変更することができたらどうすればいいのか...
追加された 著者 Bobble,
つまり、tkパラメータをどのように計算すればよいですか?
追加された 著者 Bobble,
Googleはさらに複雑なことをしています。私はそれを動作させるように並べ替えることができたと思うが、それはすぐに私に襲われ、オーディオではなくキャプチャ要求を返すようになった。 APIサービスにお金を払う以外にここからどこに行くのかはわかりません。
追加された 著者 Nicholas R. Grant,
私は最後のコメントでこれを言い表すのを忘れていましたが、ファイルを入手することが必死ならば、Firefoxを使用してください。 AppData/Mozilla/Profile/xyz/cache2/entriesに移動し、ファイル変更された注文を最新のものに変更します。次に、何かを入力してサウンドファイルを再生します。これらはLAME 3.99でエンコードされており、開始サイズは約9KBです。それらは最初の4バイトとしてFF F3 40 C4のマジックヘッダー検索で見つけることができます。しかし私は注意する必要があります、Googleの生成されたサウンドファイルには、いつ、そして誰がファイルを作成したかを追跡するためのメタデータがたくさんあります。ストリップして、あなたは良いだろう。
追加された 著者 Nicholas R. Grant,
Google翻訳が再び変更されました。私は別のクエリのパラメータが必要と考えています: 'クライアント= t'。しかし、それはまた、今やレート制限と思われる。
追加された 著者 ncpierson,
Googleの翻訳はもう一度更新されました。 APIに正しくアクセスするには、次のようにする必要があります。 gist.github.com/ncpierson/eeea9956cb2bc3b290e5 をご覧ください。 'tk'パラメータが必要になりました。それは私が認識しない何らかのハッシュ関数ですが、現在の時刻でソートされたクエリテキストを検証するのに役立ちます。
追加された 著者 ncpierson,
私が知っている唯一の方法は、そのジストにどのように私が作ったかです。そのコードは、translate.google.comから提供されたJSのuglifiedからほとんど直接コピーされます。 'TL'関数は 'tk'パラメータを計算します。残念ながら、私が知る限り、APIドキュメントはありません。
追加された 著者 ncpierson,
こんにちは、みなさん。恥知らずの自己宣伝:私は自分のウェブサイト soundoftext.com にこれを必要としています。私はGoogle APIを変更するたびにその方法を見つけました。すぐに新しいサイトを公開し、実際の APIを用意する予定です。だから見守ってください。しかし、今でも私のAPIをリバースエンジニアリングすることができます。たくさんの人がいます:
追加された 著者 ncpierson,

あなたの例を使用したときにGoogle翻訳ページが実行されたスクリプトは、ファイルを生成しました ファイル拡張子なしで "translate_tts"と呼ばれる。

このファイルを使用する簡単な方法の1つは、ブラウザにたとえば次のように伝えることです。 Mozilla [「ツール」の下に/ "オプション" /アプリケーション]、オーディオファイルを保存する - この場合、私はMP3と信じて、 たとえ拡張子がないとしても。いずれにしても、オーディオ/ウェーブまたはオーディオ/ MP3の横にある「アクション」の下のオプションを「ファイルを保存」に選択します。

ブラウザがURLを読み込むと、 "translate_tts"というファイルがダウンロードされます。 どのようなデータであっても。あなたのケースでは、私はファイル名を "Hello-World.mp3"。そうすれば、ハードドライブにファイルがあり、必要なオーディオが含まれています。オーディオプレーヤー、好ましくはVLCメディアプレーヤーで再生できます ほぼすべてのフォーマットを再生します。

もちろん、別のオーディオが必要な場合は、 "さようならワールド"、あなたはあなたのURLを変更するだけです に

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

上記の手順を繰り返して、ファイルを「Goodbye-World.mp3」として保存します。

7
追加された
これは単純に機能します。 tl-enをターゲット言語に変更する必要があります。
追加された 著者 Thomas Altfather Good,

If you want to do it manually, right click 'save as...' will do the trick. Example: test your own example.

私はvb.netのことを知らないが、私はLinuxのbashスクリプトを通していくつかの情報をダウンロードしようとしている。私はvb.netタグを見るまでwgetの使用をお勧めしました。 このスレッドを確認してください。あなたにいくつかのアイデアを与えるかもしれない。あなたは基本的に、mp3のリンクのページをダウンロードしたいと思っています。

4
追加された

私はあなたのものとちょうどちょっとしたことを加えた関数を書こうとしていましたが、いくつかの検索の後に次のコードを生成することができました。それは4つのことを行います:

  1. Does a web request to get the MP3 file from Google TTS
  2. Saves the MP3 to a file (I put it 1 layer deeper into the running directory)
  3. Plays the file using the windows media player COM API (can be included as a COM reference in your project)
  4. Stores a history of previously uttered phrases so it doesn't have to hit the API again when a repeated phrase appears (the internet isn't great where I plan on installing this).

    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
追加された

ここに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に由来します。

2
追加された

2017年に生成された音声ファイルを取得し、Googleのすべてのメタデータを削除する半自動化された方法を作りました。それはFirefox用で、C#で書かれています。だからあなたがしようとしているものに近いですが、まだ100%ではありません。私はファイルを直接取得しようとしましたが、Googleは現時点では回避できないような非常に高度なセキュリティ機能を実装しています。私は近くにいると思ったとき、私にReCaptchaを送り返しました。

私はここにオープンソースを公開しています: https://github.com/Goodlookinguy/FFMediaCacheGrabber ハウツービデオも同様です。

うそをつくことはありません。あなたが探しているものではないので、この答えについては気にしませんが、人を助けるためには少なくとも今できることはすべてです。

0
追加された