脚本:来自终端的文本到语音(Google)

今天,我与您分享了一个非常有用的脚本,可以使用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中选择文本并将其拖动到终端。

就是这样,希望您喜欢它。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   悠悠

    太酷了,非常感谢you

    女孩子发出的声音多么优美,我想我坠入爱河了。

    1.    黑暗uzz

      打扰一下,您能帮我中文吗?它不会检测中文字符,只会拼音。

  2.   阴影

    这对于检查邮件的脚本或个性化警报非常有用,该警报在唤醒时会告诉您预测和待处理消息xD

  3.   悠悠

    在这里,我做了一个测试视频😛 https://www.youtube.com/watch?v=O3IeK7PjA_0

    1.    让我们使用linux

      好! 谢谢!

  4.   本特罗克斯

    听起来很好,我只需要安装mpg123🙂

  5.   波塔罗

    我必须安装mpg123,但它很酷,因此,如果它不接受某些单词,则会显示正确的刻度线等。

    H

  6.   巴勃罗·霍纳托(Pablo Honorato)

    病毒数据库已更新(?)

    1.    贾布勒

      apt update && ./t2.sh zh病毒数据库已更新

  7.   亚历山大

    哈哈哈棒极了,我已经有一些用处,毫无疑问=)感性的声音,谢谢分享。

  8.   豪尔赫·莫拉蒂利亚(Jorge Moratilla)

    作为Mac OSX用户,由于我没有mpg123,因此我无法使用该脚本,因此,通过修改脚本并使用VLC,我们可以使其在Mac OS X上正常工作。

    http://pastebin.com/C2Mkp1Qy

    1.    罗洛

      问题是,vlc一定会保持打开状态,并在完成执行后不会关闭,您可以使用cvlc来防止图形界面打开

      1.    罗洛

        它可以放
        cvlc –播放并退出«https://translate.google.com/translate_tts?tl=$[$key]}»
        以便在复制结束时关闭

  9.   涅森夫

    大家好,我收到此错误,让我们看看是否有人告诉我问题出在哪里
    玩线:1/1
    HTTP请求失败:找不到404
    [mpg123.c:610]错误:访问http资源 http://translate.google.com/translate_tts?tl=hola&q= 失败了。

    1.    涅森夫

      [代码]玩法:1之1
      HTTP请求失败:找不到404
      [mpg123.c:610]错误:访问http资源 http://translate.google.com/translate_tts?tl=hola&q= 失败了。 [/代码]

    2.    让我们使用linux

      问题是您使用的脚本错误。
      运行它时,您必须将文本的语言作为第一个参数传递,如文章中的示例所示。
      我再举一个例子:
      ./t2s.sh,这是一个简单的示例。
      请注意,在ts2.sh之后,其后跟“ en”(意思是“英语”,即英语)。 对于西班牙语,请使用“ es”,然后使用要转换的该语言短语。
      拥抱! 保罗

  10.   匿名

    你知道说话的命令吗? 呵呵

    espeak -v is-«你好»

    1.    让我们使用linux

      是的,但是不一样。 这个声音好多了。 🙂

      1.    匿名笔记

        我们同意!
        的问候!

  11.   萨拉

    对于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]}}»

    1.    圭多

      更好的“ mplayer –非常安静”,因此它不会用文本填充输出

  12.   乔纳森

    在我的应用程序中使用google的一个好主意就像手套一样适合我。
    http://github.com/alfa30/t2v

  13.   黑暗uzz

    还有一个问题; 有人可以告诉我如何录制输出音频吗?

    1.    何塞GDF

      我自己回答,因为我刚听懂。 使用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]}»»

      当然可以用另一种更有效,更干净的方式来完成它,但至少对我有用。

      1.    黑暗uzz

        优秀的JoséGDF,我用您的方法尝试了非常好的结果,问候。

      2.    豆浆的

        要在第二次执行中节省流量,您可以复制在第一次执行中生成的.wav

      3.    何塞GDF

        是的,使用我们安装的播放器。 例如,对于VLC Player,它将是:

        vlc音频.wav

        好吧,谁说vlc,说任何其他玩家,包括那些通过终端工作的玩家。

        为了避免每次使用脚本时都覆盖文件,应使用变量作为名称。 用户在开始之前输入(读取命令)的名称...但是那样会使卷发卷曲curl

  14.   德拉科

    我在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');

    1.    黑暗uzz

      我已经可以使用以下命令来记录输出音频了:
      arecord〜/ zhongwen.mp3&./t2s.sh zh ni hao; fg
      并在ctrl + c结束时停止录制。

      我从没用过php
      但是在运行时:
      php5 text-to-speech.php是您好
      konsola主持:
      sox FAIL格式:无文件扩展名“ mp3”的处理程序

      非常感谢任何贡献,我将在以后再试。

  15.   基里安

    2个适用于Google语言翻译器+文本到语音翻译的应用程序:
    http://www.linuxhispano.net/2014/05/29/traductor-de-google-voz/

  16.   约瑟夫

    我认为这是转换的最佳方法,声音不如Linux的其他选项差
    有没有办法让它读取纯文本文件?
    将整本书转换成音频将非常有用

  17.   丘夫拉斯

    好吧,这对我不起作用,我不知道为什么,这是这样的:

    xxxxx:〜/ Documents / Linux $ ./t2s.sh是你好

    ---------
    丹·福恩特的演讲稿
    TalkToDanF@gmail.com
    ---------
    玩线:1/1
    http_open:HTTP / 1.0 400错误的请求
    http://translate.google.com: 没有这样的文件或目录

    我已经安装了mpg123,并且没有做任何测试,但是什么也没做…。 提前致谢

  18.   伊格纳西奥·克鲁兹·马丁内斯(Ignacio Cruz Martinez)

    您好,此脚本在听声音和录制翻译者的文字方面都非常有用。

    实际上,我已经修改了脚本以使其适应我的需要:将文本(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一起设置给我带来了很多麻烦。

    谢谢,再见。

    1.    让我们使用linux

      不知道...必须查看Google翻译器许可证。

  19.   Armando

    该脚本对我不起作用,显然这是与URL有关的问题,对于有兴趣的人,这是正确的URL:
    http://translate.google.com/translate_tts?tl=es&q=Hola

  20.   华若

    你好! 我一直在用您的脚本进行测试,执行时它告诉我找不到音频,因此我输入了URL,看来Google先生输入了验证码...

  21.   '

    更新脚本