有人可以推荐我一个适用于 CentOs 服务器的 PHP TTS 解决方案吗?

发布于 2024-09-10 04:57:21 字数 1491 浏览 3 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

自我难过 2024-09-17 04:57:21

如果您处于可以进行系统调用的环境中,则可以通过管道输出 Festivallame 中,如下所示:

<?php
$infile = tempnam();
file_put_contents($input, 'My name is judge');

$outfile = "/path/to/output.mp3";
$cmd = "text2wave -f 22050 < {$infile} | lame --quiet --preset medium  - {$outfile}";

$output = $status = null;
exec($cmd, $output, $status);

如果您想进行进一步处理以及转换,您可以将 text2wave 的输出通过管道传输到 SoX,它也可以为您进行转换:

text2wave -f 22050 < input.txt | sox - output.mp3

默认 Festival不过,声音似乎有点裤子,所以这篇文章可能值得研究,但是我自己还没有实际尝试过。

我知道你没有使用 ubuntu,但对于其他可能觉得这个答案有帮助的人来说,有一个问题,即使你安装了所有“丑陋”的插件,SoX 仍然无法输出 MP3 文件。您必须手动拆除 .deb 并修改 debian/rules 文件以从 DEB_CONFIGURE_EXTRA_FLAGS 中删除 --without-lame。

If you are in an environment where you can make system calls, you could pipe the output of Festival into lame like so:

<?php
$infile = tempnam();
file_put_contents($input, 'My name is judge');

$outfile = "/path/to/output.mp3";
$cmd = "text2wave -f 22050 < {$infile} | lame --quiet --preset medium  - {$outfile}";

$output = $status = null;
exec($cmd, $output, $status);

If you want to do further processing as well as the conversion, you can pipe the output of text2wave to SoX instead, which can also do the conversion for you:

text2wave -f 22050 < input.txt | sox - output.mp3

The default Festival voice seems to be a bit pants though, so this article might be worth investigating, but I haven't actually tried it myself.

I know you aren't using ubuntu but for others who might find this answer helpful, there is a problem where even after you install all the "ugly" plugins, SoX still cannot output MP3 files. You have to manually dismantle the .deb and modify the debian/rules file to remove --without-lame from DEB_CONFIGURE_EXTRA_FLAGS.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文