谷歌娘语音,就是在使用谷歌翻译的时候点击播放时的语音包。经常看到一些 vlog 作者会使用这样的语音添加旁白。根据网上的那些教程去打开开发者工具下载这些语音,数量少还行,一多的话就让人觉得无聊。于是能命令行解决就命令行,考虑到有些人可能不熟悉命令行,本文是 step by step 教程,前面觉得简单可以直接略过。

首先我们需要安装一下 oh-my-zsh:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

编辑 oh-my-zsh 的 .zshrc 配置文件,这个文件隐藏在用户根目录下,输入命令 open ~/.zshrc 用进行可视化编辑,如果你要使用 vim、nano 这样的工具编辑也行,如果你使用他们进行编辑应该自然懂得如何操作,在 .zshrc 末尾添加如下代码:

tts(){

encode=$(python -c "import urllib, sys; print urllib.quote(sys.argv[1])" $1)

curl 'https://translate.google.cn/translate_tts?ie=UTF-8&q='$encode'&tl=zh-TW&client=tw-ob'  -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3835.0 Safari/537.36' -H 'referer: https://translate.google.cn/translate_tts?ie=UTF-8&q='$encode'&tl=zh-TW&client=tw-ob' 2>/dev/null > $1'.mp3'

}

最后打开终端,输入如下命令让自定义的 function 生效:

source ~/.zshrc

使用教程:tts [你想说的话]

输入这段命令后就会在当前目录下生成一个文件,文件名为:你想说的话.mp3

例如,我想让谷歌娘语言说一段话:少数派,那么就是输入命令:

tts 少数派

如果你的要输入的文本中带有空格,请在文本两端分别加上一个单引号,例如:

tts 'see you again'


现在再来升级一下,下载好音频文件后自动复制到剪切板,首先我们需要创建一个 AppleScript 脚本来实现复制文件到剪切板的功能,输入以下命令新建一个 ctc(copy to clipboard) 脚本:

touch /usr/local/bin/ctc;open /usr/local/bin/ctc

在出现的文本编辑界面输入以下代码并保存:

#!/usr/bin/osascript

on run args

  set the clipboard to POSIX file (first item of args)

end

赋予 ctc 文件可执行权限:

chmod +x /usr/local/bin/ctc

再刚才编辑的 .zshrc 的 tts function 添加一行用于复制的命令:ctc $(pwd)/$1'.mp3'

tts(){

encode=$(python -c "import urllib, sys; print urllib.quote(sys.argv[1])" $1)

curl 'https://translate.google.cn/translate_tts?ie=UTF-8&q='$encode'&tl=zh-TW&client=tw-ob'  -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3835.0 Safari/537.36' -H 'referer: https://translate.google.cn/translate_tts?ie=UTF-8&q='$encode'&tl=zh-TW&client=tw-ob' 2>/dev/null > $1'.mp3'

ctc $(pwd)/$1'.mp3'

}

再次 source ~/.zshrc 之后就可以在下载音频文件之后再自动将音频文件复制到剪切板了

再方便一点的玩法?做个 Alfred Workflow 就好,有需要可以自己动手试试。


感谢朋友 qwq 在 Web 方面提供的帮助,因为之前 curl 的时候都会返回 403 forbidden,经提示要带上 referer 和 user-agent