今天,我与您分享了一个非常有用的脚本,可以使用Google语音引擎将文本转换为语音。 该脚本的主要优点是它“规避”了Google规定的100个字节的限制。 实际上,老实说,它遵守此限制,但是会自动发送所有行,这意味着用户不会注意到此限制。 但是,最苛刻的要求会注意到,这种转换的质量与我们在Google Translate中获得的转换质量不同,这主要是由于此限制,并且不可能一次通过整个文本。 作为积极的一点,应该补充说明的是,该脚本还允许您指定要转换的文本的语言。
澄清之后,让我们看看要执行哪些步骤。
步骤
1.- 创建一个名为t2s.sh的文件。
2.- 复制以下内容:
#!/ bin / bash ################################# Dan Fountain的语音脚本##由UsemosLinux修改##TalkToDanF@gmail.com############################### INPUT = $ * STRINGNUM = 0 ary =( $ {INPUT:2})echo“ ---------------------------” echo“ Dan Fountain的语音脚本” echo“ TalkToDanF @ gmail .com“ echo” ---------------------------“ for key in” $ {!ary [@]}“ do SHORTTMP [$ STRINGNUM] =“ $ {SHORTTMP [$ STRINGNUM]} $ {ary [$ key]}” LENGTH = $(echo $ {#SHORTTMP [$ STRINGNUM]})#echo“ word:$ key,$ {ary [$ key ]}“ #echo”添加到:$ STRINGNUM“ if [[” $ LENGTH“ -lt” 100“]]; 然后#echo开始新行SHORT [$ STRINGNUM] = $ {SHORTTMP [$ STRINGNUM]}否则STRINGNUM = $(($ STRINGNUM + 1))SHORTTMP [$ STRINGNUM] =“ $ {ary [$ key]}”“ SHORT [ $ STRINGNUM] =“ $ {ary [$ key]}”为键入“ $ {!简短内容[@]}”所做的操作已完成#echo“ line:$ key is:$ {SHORT [$ key]}” echo“播放线:$(($$ STRINGNUM + 1))的$((($键+ 1))“” mplayer“?即= UTF-8和tl = $ {1}&q = $ {SHORT [$ key]}“完成
3.- 授予脚本执行权限:
须藤chmod + x t2s.sh
4.- 执行作为参数传递的脚本:a)对应于文本的语言代码,b)要转换的文本。 例如:
./t2s.sh zh这是要转换的非常有趣的文本。
提示:一些终端仿真器允许您通过拖动来粘贴文本。 因此,可以在Firefox中选择文本并将其拖动到终端。
就是这样,希望您喜欢它。
太酷了,非常感谢you
女孩子发出的声音多么优美,我想我坠入爱河了。
打扰一下,您能帮我中文吗?它不会检测中文字符,只会拼音。
这对于检查邮件的脚本或个性化警报非常有用,该警报在唤醒时会告诉您预测和待处理消息xD
在这里,我做了一个测试视频😛 https://www.youtube.com/watch?v=O3IeK7PjA_0
好! 谢谢!
听起来很好,我只需要安装mpg123🙂
我必须安装mpg123,但它很酷,因此,如果它不接受某些单词,则会显示正确的刻度线等。
H
病毒数据库已更新(?)
apt update && ./t2.sh zh病毒数据库已更新
哈哈哈棒极了,我已经有一些用处,毫无疑问=)感性的声音,谢谢分享。
作为Mac OSX用户,由于我没有mpg123,因此我无法使用该脚本,因此,通过修改脚本并使用VLC,我们可以使其在Mac OS X上正常工作。
http://pastebin.com/C2Mkp1Qy
问题是,vlc一定会保持打开状态,并在完成执行后不会关闭,您可以使用cvlc来防止图形界面打开
它可以放
cvlc –播放并退出«https://translate.google.com/translate_tts?tl=$[$key]}»
以便在复制结束时关闭
大家好,我收到此错误,让我们看看是否有人告诉我问题出在哪里
玩线:1/1
HTTP请求失败:找不到404
[mpg123.c:610]错误:访问http资源 http://translate.google.com/translate_tts?tl=hola&q= 失败了。
[代码]玩法:1之1
HTTP请求失败:找不到404
[mpg123.c:610]错误:访问http资源 http://translate.google.com/translate_tts?tl=hola&q= 失败了。 [/代码]
问题是您使用的脚本错误。
运行它时,您必须将文本的语言作为第一个参数传递,如文章中的示例所示。
我再举一个例子:
./t2s.sh,这是一个简单的示例。
请注意,在ts2.sh之后,其后跟“ en”(意思是“英语”,即英语)。 对于西班牙语,请使用“ es”,然后使用要转换的该语言短语。
拥抱! 保罗
你知道说话的命令吗? 呵呵
espeak -v is-«你好»
是的,但是不一样。 这个声音好多了。 🙂
我们同意!
的问候!
对于mpg123 -q有问题或不喜欢的人,可以切换到mplayer
mpg123 -q«http://translate.google.com/translate_tts?tl=$[1íritu&q=$[SHORT[$key]}»»
mplayer«http://translate.google.com/translate_tts?tl=$[1[&q=$[SHORT[$key]}}»
更好的“ mplayer –非常安静”,因此它不会用文本填充输出
在我的应用程序中使用google的一个好主意就像手套一样适合我。
http://github.com/alfa30/t2v
还有一个问题; 有人可以告诉我如何录制输出音频吗?
我自己回答,因为我刚听懂。 使用mpg123,我修改了脚本的第38行,如下所示:
mpg123 -q -w audio.wav«http://translate.google.com/translate_tts?tl=$[1-lex.europa.eu&q=$[SHORT[$key]}»»
我添加了-w audio.wav。 这将创建一个带有该短语音频的wav文件,但是正如我所留下的,它没有被听到。 如果您还想听到该短语,则必须添加另一行。 你们都看起来像这样:
mpg123 -q -w audio.wav«http://translate.google.com/translate_tts?tl=$[1[&q=$[SHORT[$key]}}»&
mpg123 -q«http://translate.google.com/translate_tts?tl=$[1íritu&q=$[SHORT[$key]}»»
当然可以用另一种更有效,更干净的方式来完成它,但至少对我有用。
优秀的JoséGDF,我用您的方法尝试了非常好的结果,问候。
要在第二次执行中节省流量,您可以复制在第一次执行中生成的.wav
是的,使用我们安装的播放器。 例如,对于VLC Player,它将是:
vlc音频.wav
好吧,谁说vlc,说任何其他玩家,包括那些通过终端工作的玩家。
为了避免每次使用脚本时都覆盖文件,应使用变量作为名称。 用户在开始之前输入(读取命令)的名称...但是那样会使卷发卷曲curl
我在PHP中完成(为Asterisk电话系统创建音频*)
<?php
$ url ='http://translate.google.com/translate_tts?ie=UTF-8&q={query}%0A&tl = is&prev =输入';
if(count($ argv)<= 1){
$ name = basename($ argv [0]);
死亡($ name。'usage:.. $ name。'
}
array_shift($ argv);
$查询=爆破('',$ argv);
$ filename = str_replace(数组('',',','。'),'-',$查询);
$ filename = str_replace('-','-',$ filename);
$ url = str_replace('{query}',rawurlencode($ query),$ url);
$ ch = curl_init();
curl_setopt($ ch,CURLOPT_URL,$ url);
curl_setopt($ ch,CURLOPT_HEADER,0);
curl_setopt($ ch,CURLOPT_RETURNTRANSFER,true);
$ result = curl_exec($ ch);
curl_close($ ch);
$ path = getcwd()。'/'。$ filename;
file_put_contents($ path。'。mp3',$ result);
@exec(“ sox {$ path} .mp3 -b 16 -r 8000 -t wavpcm {$ path} .wav”);
@unlink($ path。'。mp3');
我已经可以使用以下命令来记录输出音频了:
arecord〜/ zhongwen.mp3&./t2s.sh zh ni hao; fg
并在ctrl + c结束时停止录制。
我从没用过php
但是在运行时:
php5 text-to-speech.php是您好
konsola主持:
sox FAIL格式:无文件扩展名“ mp3”的处理程序
非常感谢任何贡献,我将在以后再试。
2个适用于Google语言翻译器+文本到语音翻译的应用程序:
http://www.linuxhispano.net/2014/05/29/traductor-de-google-voz/
我认为这是转换的最佳方法,声音不如Linux的其他选项差
有没有办法让它读取纯文本文件?
将整本书转换成音频将非常有用
好吧,这对我不起作用,我不知道为什么,这是这样的:
xxxxx:〜/ Documents / Linux $ ./t2s.sh是你好
---------
丹·福恩特的演讲稿
TalkToDanF@gmail.com
---------
玩线:1/1
http_open:HTTP / 1.0 400错误的请求
http://translate.google.com: 没有这样的文件或目录
我已经安装了mpg123,并且没有做任何测试,但是什么也没做…。 提前致谢
您好,此脚本在听声音和录制翻译者的文字方面都非常有用。
实际上,我已经修改了脚本以使其适应我的需要:将文本(lemario)中的单词列表转换为语音; 将我的声音保存为wav,转换为ogg并根据读取的单词命名。
我在KDE中使用Kdialog进行了此操作,以指定带有单词列表的文件所在的路径以及要保存语音音频的目录。
从WAV到OGG的转换完成后,它将创建两个文件夹,其中一侧存储了wav,另一侧存储了ogg。
起初我很生气,因为我没有正确读带有重音符号的单词,但是我发现您必须在代码中添加“ es&ie = UTF8”。 一会儿我忘记了字符编码。
我留下了我编写的脚本代码,以防它对您有帮助:
############################################### #####################
#!/斌/庆典
#################################
#文字转语音讲座#
#由Ignacio CruzMartínez改编#
#邮件是秘密xD#
#################################
#KDE对话框以指定lemmary的路径和名称
soyunarchivo = $(kdialog –inputbox«输入路径和文件名(如果有扩展名,则带有扩展名):»)
#KDE对话框以指定语音文件的目标文件夹
path = $(kdialog –inputbox«输入保存语音音频的路径:»)
#通过cat读取文本文件的所有行,每行包含一个单词
对于$ in中的我(cat $ soyunfile)
do
回声我
#使用Google翻译转换为语音,请不要忘记编码,以便阅读口音
mpg123 -q -w“ $ path” $ i.wav“ http://translate.google.com/translate_tts?tl=es&ie=UTF8&q=$i”
mpg123 -q“ http://translate.google.com/translate_tts?tl=es&ie=UTF8&q=$i”
#使用ffmpeg将WAV文件转换为OGG
ffmpeg -i“ $ path” $ i.wav -acodec libvorbis“ $ path” $ i.ogg
完成
#使用这些行创建文件夹以组织WAV或OGG中的语音文件
mkdir“ $ path” WAV
mv“ $ path” *。wav“ $ path” WAV
mkdir“ $ path” OGG
mv“ $ path” *。ogg“ $ path” OGG
#KDE对话框指示作业已完成
kdialog –msgbox'进程已终止'
############################################### ###################
现在,您对使用生成的语音文件的许可证有任何了解吗?
版权及相关事物的限制。 这让我很感兴趣,因为我计划使用其中的一些语音文件来支持有文化的人们,这基本上是一个非盈利项目。
而且正是该工具为西班牙语提供了最好的语调,不幸的是在Linux中没有类似的东西。 Mbrola与Gespeaker一起设置给我带来了很多麻烦。
谢谢,再见。
不知道...必须查看Google翻译器许可证。
该脚本对我不起作用,显然这是与URL有关的问题,对于有兴趣的人,这是正确的URL:
http://translate.google.com/translate_tts?tl=es&q=Hola
你好! 我一直在用您的脚本进行测试,执行时它告诉我找不到音频,因此我输入了URL,看来Google先生输入了验证码...
更新脚本