首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过云API从命令行进行文本语音转换

通过云API从命令行进行文本语音转换
EN

Stack Overflow用户
提问于 2020-06-05 03:25:18
回答 1查看 76关注 0票数 0

我正在尝试定义一个一行别名,如下所示:

代码语言:javascript
复制
alias speak='curl -G --data-urlencode "text=$(cat /dev/stdin)" "https://speech.botiumbox.com/api/tts/en?&tts=marytts" -H "accept: audio/wav" | mpv -'

这样我就可以像这样使用它

代码语言:javascript
复制
echo Hello World! | speak
speak Hello World!
speak<RET> # continuously do TTS per line until ^D
Hello World!
Another line!
<Ctrl-D>

如果我使用

代码语言:javascript
复制
curl -G --data-urlencode "text=Hello World!" "https://speech.botiumbox.com/api/tts/en?&tts=marytts" -H "accept: audio/wav" | mpv -

如上所述,简单地采用cat /dev/stdin的标准输入似乎并不能创建交互式的命令行界面程序。有什么想法可以把这个API封装到一个交互式的CLI程序中吗?理想情况下,应该与POSIX兼容,这样它就可以在Unixen中的bash shell中运行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-12 05:57:59

我发现了一个使用bash函数而不是别名的变通方法。函数marySpeak接受一个字符串,将其在线发送给TTS,然后使用mpv回放它。一切都被定义为一行,所以可以放在你的.bashrc

代码语言:javascript
复制
marySpeak() { curl -s -G --data-urlencode "text=$1" "https://speech.botiumbox.com/api/tts/en?&tts=marytts" -H "accept: audio/wav" | mpv - 2>&1 > /dev/null; } 

# then simply use it like this
marySpeak "hello world!"

在GNU/Linux和macOS上进行了测试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62202632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档