我在互联网上找到了这段代码,它使用了Google翻译的文字转语音功能。这是代码:
http://translate.google.com/translate_tts?tl=en&q="hello world"
我知道如何在我的vb.net中调用此功能,但我不知道如何从Google翻译中保存MP3文件。我使用vb.net中的system.speech来获得此功能,但我特别需要从谷歌翻译获得演讲。那么,有没有人知道如何使用该URL保存谷歌翻译的声音文件?感谢。
答案 0 :(得分:21)
自2015-12-21起,此代码在进一步更改Google TTS API后不再有效。如@ncpierson所示,需要一个新的附加参数tk
,我很难在shell脚本中计算出它的计算方法。当我可以的时候,我会用新的编辑修改这个答案。
我不确定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作为标准,但可以轻松下载(参见,例如this link)。
(感谢@ncpierson client=t
参数)。
答案 1 :(得分:7)
当我使用您的示例时,谷歌翻译页面运行的脚本生成了一个文件 名为“translate_tts”,没有文件扩展名。
使用此文件的一种简单方法是告诉您的浏览器,例如Mozilla [在“工具”下/ “OPTIONS”/ APPLICATIONS],用于保存音频文件 - 在这种情况下我相信它是一个MP3, 即使没有延期。在任何情况下,选择audio / wave或audio / Mpg旁边的“ACTION”下的选项为“SAVE FILE”。
当浏览器加载您的网址时,会下载名为“translate_tts”的文件, 无论数据是什么。所以,在你的情况下,我会将文件名更改为 “你好,World.mp3”。这样你就可以在你的硬盘上放置文件,其中包含你想要的音频,可以由任何音频播放器播放,最好是VLC媒体播放器,因为它会 几乎可以播放任何格式。
当然,如果你想要一个不同的音频,例如“再见世界”,您只需更改您的网址即可 到
http://translate.google.com/translate_tts?tl=en&q="Goodbye-World"
并重复上述步骤将文件另存为“Goodbye-World.mp3”。
答案 2 :(得分:3)
如果您想手动执行此操作,请右键点击“另存为...”即可。示例:test your own example。
我不知道vb.net,但我打算尝试通过linux中的bash脚本下载几点信息。在我看到vb.net标签之前,我建议使用wget。检查this thread,它可能会给你一些想法。你基本上想要下载链接的页面,这是一个mp3。
答案 3 :(得分: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。
答案 4 :(得分:2)
我当时正在尝试编写一个与你的功能完全相同的函数,加上一些额外的功能,经过一些搜索,我能够生成以下代码。它做了四件事:
存储以前发音的短语的历史记录,以便在出现重复的短语时不必再次点击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
醇>
答案 5 :(得分:0)
我已经制作了一种半自动方式,可以在2017年获取生成的语音文件并删除所有Google的元数据。它适用于Firefox,它是用C#编写的。所以它接近你想要做的,但仍然不是100%。我试图直接获取文件,但谷歌已经实现了一些非常奇特的安全功能,我现在似乎无法解决这些问题。当我以为我靠近时,它又送回了ReCaptcha。
我在这里开源:https://github.com/Goodlookinguy/FFMediaCacheGrabber并提供了一个操作视频。
不会撒谎,我对这个答案感觉不太好,因为它不是你想要的,但至少我现在可以帮助别人。