Audio 如何使用Google TTS从文本创建mp3?

Audio 如何使用Google TTS从文本创建mp3?,audio,web,mp3,text-to-speech,google-text-to-speech,Audio,Web,Mp3,Text To Speech,Google Text To Speech,如何使用Google TTS从任何文本创建mp3 1) 我试图找到google.translate API,但只找到了“音频到文本”,除了“文本到音频” 2) 我试着把SpeechSynthesis转换成mp3,但还是一无所获 3) 我发现只有一个网站“beta.soundoftext.com”,它们生成的mp3音频文件没有API接口 那么,谁能帮帮我吗。 我正在为我的网站(专用服务器)搜索任何将文本转换为语音的方法。谢谢大家! 我是文本之声的创造者 我的网站有一个API!(截至上周) 您可以在

如何使用Google TTS从任何文本创建mp3

1) 我试图找到google.translate API,但只找到了“音频到文本”,除了“文本到音频”

2) 我试着把SpeechSynthesis转换成mp3,但还是一无所获

3) 我发现只有一个网站“beta.soundoftext.com”,它们生成的mp3音频文件没有API接口

那么,谁能帮帮我吗。
我正在为我的网站(专用服务器)搜索任何将文本转换为语音的方法。谢谢大家!

我是文本之声的创造者

我的网站有一个API!(截至上周)

您可以在此处找到API的文档:

然而,在幕后,我只是在使用一个npm库,它会自动为我生成Google Translate TTS链接。具体来说,我正在使用这个库:

我敢肯定,每种流行语言都有一个做类似事情的库,如果你告诉我你喜欢使用哪种语言,我可以帮助你找到它

或者您可以只使用my API=)

,脚本现在在上可用


所有的输入都非常简单,除了语言部分,用户可能不太熟悉某些语言代码,在这些情况下,您可以检查您希望引擎使用的语言的代码。

Guy Rotem编写了一个js函数来获取
tk
令牌。我将其改编为Java:

公共类哈希器{
public long shiftleftorright thensumorxor(long num,String[]opArray){
长结果=num;
int电流=0;
while(电流6|0xC0;//110{l[10-6]}
e[f++]=l&0x3F | 0x80;//10{l[5-0]}
}否则如果(0xD800==(l&0xFC00)&&
g+1>12&0x3F | 0x80;//10{l[7*-2]}
e[f++]=l&0x3F | 0x80;//10{(l+1)[5-0]}
}否则{
e[f++]=l>>12 | 0xE0;//1110{l[15-12]}
e[f++]=l>>6&0x3F | 0x80;//10{l[11-6]}
e[f++]=l&0x3F | 0x80;//10{l[5-0]}
}
结果大小=f;
}
返回数组.copyOf(e,resultSize);
}
公众长期激励(长期激励2){
如果(encondindRound2<0){
encondindRound2=(encondindRound2&0x7fffffff)+0x80000000L;
}
返回(encondindRound2)%1\u 000\u 000;
}
/*
/例如:
/
/输入:查询:“hola”,windowTkk:“409837.2120040981”
/输出:“70528.480109”
/
*/
公共字符串calcHash(字符串查询,字符串窗口TKK){
//步骤1:将查询字符代码分散在字节数组中,每个字符1-3个字节
int[]bytesArray=transformQuery(查询);
//步骤2:从TKK索引开始,
//逐个添加上一步中的数组,并执行两轮shift+add/xor
字符串[]d=windowTkk.split(“\\”);
int-tkkIndex=0;
试一试{
tkkIndex=Integer.valueOf(d[0]);
}
捕获(例外e){
e、 printStackTrace();
}
长tkkKey=0;
试一试{
tkkKey=Long.valueOf(d[1]);
}
捕获(例外e){
e、 printStackTrace();
}
int电流=0;
长期结果=TKK指数;
while(当前<字节数组.length){
结果+=字节数组[当前];
long subresult=移位到右侧的SUMORXOR(结果,
新字符串[]{“+-a”,“^+6”});
结果=子结果;
电流++;
}
long encondingRound1=结果;
//System.out.println(“encodingRound1:+encodingRound1”);
//步骤3:使用TKK键应用3轮shift+add/xor和xor
long encondingRound2=((int)向右移位然后是sumorxor(encondingRound1,
新字符串[]{“+-3”,“^+b”,“+-f}”)^((int)tkkKey);
//System.out.println(“encodingRound2:+encodingRound2”);
//步骤4:标准化为2s补码和格式
long normalizedResult=normalizeHash(encondingRound2);
//System.out.println(“normalizedResult:+normalizedResult”);
返回字符串.valueOf(normalizedResult)+“
+((int)normalizedResult)^(tkkIndex));
}
}
一旦您有了
tk
,您只需要发送一个类似这样的HTTP请求(使用okhttp库发送请求):

HttpUrl.Builder urlBuilder=HttpUrl.parse(“https://translate.google.com/translate_tts)。newBuilder();
urlBuilder.addQueryParameter(“ie”、“UTF-8”);
urlBuilder.addQueryParameter(“q”,外来词);
urlBuilder.addQueryParameter(“tl”、“de”);
urlBuilder.addQueryParameter(“总计”、“1”);
urlBuilder.addQueryParameter(“idx”,“0”);
urlBuilder.addQueryParameter(“textlen”,
String.valueOf(foreignWord.length());
urlBuilder.addQueryParameter(“tk”,hasher.getTk(外来词));
urlBuilder.addQueryParameter(“客户端”、“webapp”);
urlBuilder.addQueryParameter(“prev”,“input”);
字符串url=urlBuilder.build().toString();
Request Request=newrequest.Builder()
.url(url)
.addHeader(“用户代理”、“Mozilla/5.0…”)
.addHeader(“接受语言”,Locale.US.getLanguage())
.addHeader(“Referer”https://translate.google.com/")
.get()
.build();