命令行(或 bash 脚本)从translate.google为file.txt启动TTS服务并自动将file.har下载到我的机器

命令行(或 bash 脚本)从translate.google为file.txt启动TTS服务并自动将file.har下载到我的机器

这是外行人的问题(在这种情况下,我是外行)。我一直在问这个问题.我用这个答案编写一个 bash 脚本,下载多个 tts 片段,将它们转换为 mp3 格式文件,并将它们合并到名为的单个文件中page.mp3。您可以在这些链接中看到它的工作原理(GitHubGitHub 维基Vimeo)。

我现在想要的是构建(并包含在full.sh)一个命令,该命令读取包含我想要转换为 tts 的文本的文件(我不想仅使用 tts 服务复制翻译),然后保存生成的文件 har,而无需打开 Firefox,等待原始文本转换为 tts 片段 url,然后保存 har.file。我真的是网络资源、正则表达式等方面的外行。所以我没有任何 MWE 来按照正常标准开始发帖。但我希望对这个目标有一些建议或解决方案。

答案1

我不知道 gtts 工具,尽管在发布此问题之前我就怀疑过这一点:

因此,这里有一个可行的替代方案:

我的经验如下:

要对机器本地保存的文件进行简单翻译,您可以使用以下命令顺序:

gtts-cli -l pt -f <file>  -o  <name.output>.mp3

需要翻译四个不同的文本文件,在两种情况下,保存的文本文件均未使用任何扩展名:

本书第 1 章:文件(页数):1 和 2

本书第 2 章:文件(页数):3 和 4

在文件1、2、3、4所在的文件夹中创建一个finish.sh文件,并在finish.sh文件内放置以下代码:

#!/bin/bash
awk -F, '{print $1"3;"}' pre.full.gtts.txt > mp3.txt; awk '/\.mp3/{sub(".mp3",++count"&")} 1'  mp3.txt > pre.count.txt; awk '/\-o/{sub(" -o",++count"&")} 1'  pre.count.txt > pre.count1.txt; awk 'ORS=" "' pre.count1.txt > hor.mp3.txt; awk -F, '{print "#!/bin/bash \n "$1" "$2""}' hor.mp3.txt > gtts.sh; chmod +x gtts.sh; export PATH=$PATH:$pwd; gtts.sh

还创建一个 pre.full.gtts.txt 文件并使用以下代码保存在同一文件夹中:

gtts-cli -l pt -f   -o  .mp
gtts-cli -l pt -f   -o  .mp
gtts-cli -l pt -f   -o  .mp
gtts-cli -l pt -f   -o  .mp
gtts-cli -l pt -f   -o  .mp

注意:行数(gtts-cli -l en -f -o .mp)不必正好等于要翻译的文本文件的数量,但不能少于这个数字。

情况 1:仅从每个文本页面生成相应的 mp3 文件:将终端进入保存文件 1、2、3 和 4 的文件夹并输入以下命令:$ chmod + x finish.sh; export PATH = $ PATH: $ pwd 然后执行$ finish.sh

案例 2:将文件 1、2、3 和 4 保存在一个名为 book.mp3 的文件中。我只在文件夹中保留了文本文件 1、2、3 和 4。然后在此文件夹中创建一个名为 full.end.sh 的文件,并将以下代码放入其中并保存:

#!/bin/bash
awk -F, '{print $1"3;"}' pre.full.gtts.txt > mp3.txt; awk '/\.mp3/{sub(".mp3",++count"&")} 1'  mp3.txt > pre.count.txt; awk '/\-o/{sub(" -o",++count"&")} 1'  pre.count.txt > pre.count1.txt; awk 'ORS=" "' pre.count1.txt > hor.mp3.txt; awk -F, '{print "#!/bin/bash \n "$1" "$2""}' hor.mp3.txt > gtts.sh; chmod +x gtts.sh; export PATH=$PATH:$pwd; gtts.sh

printf '#!/bin/bash'> oz.txt; awk -F, '{print $1"\n seq 1 4 > ozn1.txt"}' oz.txt > ozn.sh;chmod +x ozn.sh; ozn.sh; awk -F, '{print $1".mp3"}' ozn1.txt > ozn2.txt; awk 'ORS=" "' ozn2.txt > ozn3.txt; awk -F, '{print "#!/bin/bash \n cat "$1" > book.mp3"}' ozn3.txt > ozn4.sh; chmod +x ozn4.sh; ozn4.sh

注意 1:您还必须在 Case 2 文件夹中有 pre.full.gts.txt 文件。注意 2:请注意,我们要放入 book.mp3 中的文件范围是在代码片段中设置的print $1"\n seq 1 4。运行 finish.sh 命令(假设您已经完成$ export PATH=$PATH:$pwd; chmod + x finish.sh

案例 3:将第 1 页和第 2 页保存在一个 mp3 文件中,我们将其命名为 capitule1.mp3,将第 3 页和第 4 页保存在另一个 mp3 文件中,我们将其命名为 capitule2.mp3 要做到这一点,只需printf '#!/bin/bash'> oz.txt; awk -F, '{print $1"\n seq 1 4 > ozn1.txt"}' oz.txt > ozn.sh;chmod +x ozn.sh; ozn.sh; awk -F, '{print $1".mp3"}' ozn1.txt > ozn2.txt; awk 'ORS=" "' ozn2.txt > ozn3.txt; awk -F, '{print "#!/bin/bash \n cat "$1" > book.mp3"}' ozn3.txt > ozn4.sh; chmod +x ozn4.sh; ozn4.sh在文件中再添加一行 ( )full.end.sh并更改摘录中属于每个章节的相应页面的范围 (例如print $1"\n seq 3 4:) e 将 book.mp3 重命名为 capitule2.mp3 并执行$ full.end.sh。看看代码会是什么样子 full.end.sh:

#!/bin/bash
awk -F, '{print $1"3;"}' pre.full.gtts.txt > mp3.txt; awk '/\.mp3/{sub(".mp3",++count"&")} 1'  mp3.txt > pre.count.txt; awk '/\-o/{sub(" -o",++count"&")} 1'  pre.count.txt > pre.count1.txt; awk 'ORS=" "' pre.count1.txt > hor.mp3.txt; awk -F, '{print "#!/bin/bash \n "$1" "$2""}' hor.mp3.txt > gtts.sh; chmod +x gtts.sh; export PATH=$PATH:$pwd; gtts.sh

printf '#!/bin/bash'> oz.txt; awk -F, '{print $1"\n seq 1 2 > ozn1.txt"}' oz.txt > ozn.sh;chmod +x ozn.sh; ozn.sh; awk -F, '{print $1".mp3"}' ozn1.txt > ozn2.txt; awk 'ORS=" "' ozn2.txt > ozn3.txt; awk -F, '{print "#!/bin/bash \n cat "$1" > capitule1.mp3"}' ozn3.txt > ozn4.sh; chmod +x ozn4.sh; ozn4.sh

printf '#!/bin/bash'> oz.txt; awk -F, '{print $1"\n seq 3 4 > ozn1.txt"}' oz.txt > ozn.sh;chmod +x ozn.sh; ozn.sh; awk -F, '{print $1".mp3"}' ozn1.txt > ozn2.txt; awk 'ORS=" "' ozn2.txt > ozn3.txt; awk -F, '{print "#!/bin/bash \n cat "$1" > capitule2.mp3"}' ozn3.txt > ozn4.sh; chmod +x ozn4.sh; ozn4.sh

谢谢!

相关内容