屏幕播放/戏剧文本到多音音频播放转换器

dramatts的Python项目详细描述


关于

dreamtts解析剧院/屏幕播放的脚本(纯文本文件),并将其转换为多声音音频播放 (波形文件)。在

虽然脚本解析功能是由dramaTTS程序本身提供的,但它依赖于外部工具 音频处理:

为了创建音频输出,必须安装SoXFestival以及{em1}$Festival的语音和词典 使用dreamtts。在

有关详细信息,请参阅dramaTTS documentation

许可证

dreamtts,版权所有(c)2020 Thies Hecker

dramaTTS是在GPLv3许可下发布的免费软件(请参阅COPYINGLICENSE中的完整免责声明) 文件获取详细信息)。 它是python编写的,您可以从dramaTTS’s gitlab page下载源代码。在

dreamtts通过以下方式实现:

PyQt,版权所有(c)Riverbank Computing Limited

以及

setuptools_scm,版权所有(c)Ronny Pfannschmidt。在

虽然dreamtts是一个独立的应用程序,但是在没有安装FestivalSoX的情况下,它的使用是有限的, 提供音频呈现(只提供包括语法高亮等在内的脚本解析)。在

虽然Festival应用程序本身和SoX也在自由软件许可下发布, 通常与Festival捆绑的特定组件(即某些词汇和声音)可以发布 在非免费许可证下。在

例如festlex OALD词典,它可以在其他文件中找到(包括最新的源代码 Festvox 2.5 release page词典中的{em1}$Festivalrelease)仅限于非商业用途。在

dramaTTS documentation将提供一个仅基于free组件的Festival分发的示例。在

请参阅源代码存储库中的COPYING文件,以获取有关 单个组件。在

特点

如上所述,dreamtts包含两个主要组件:一个脚本解析器和一个用于 音频渲染。在

脚本解析器的特点是:

  • 可配置输入文件格式
  • 语法突出(识别不同的内容,如新场景、对话行、叙述性描述等)
  • 支持正则表达式的文本字符串替换
  • 一些实用功能,如根据文本行数对扬声器进行排序

音频呈现部分基本上提供了FestivalSoX的前端,支持以下功能:

  • 改变Festival声音(音高、节奏和音量)
  • 支持多个CPU内核以加速音频渲染(为单个线路分派并行进程)
  • 支持使用Festival服务器进行渲染
  • 一些后期处理:规范化所有声音,合并音频文件(行->场景->单个项目文件)
  • (重新)渲染单个场景或演讲者

安装

您需要安装python3发行版,为了方便起见,您应该安装pip或{em1}$conda 已安装包管理器。在

在linux上,您很可能已经安装了python和pip,如果没有,您应该能够安装它们 分发包管理器。在

例如,对于基于debian的系统,比如ubuntu,只需运行:

sudo apt-get python3-pip

或基于架构:

^{pr2}$

对于Windows用户,我建议安装Anacondaminiconda,which将提供conda包 经理(确保得到的是Python3,而不是Python2的版本!)。在

要使用pip安装dreamtts

pip install dramatts

注意,在某些发行版中,您可以并行安装python2和python3。在这种情况下,你应该确保, 您没有在python2环境中使用pip来安装dreamtts。最终您需要使用pip3作为命令。 您可以通过拨打以下电话来检查您是否使用了正确的pip:

pip --version

要使用conda安装dreamtts

conda install -c thecker dramatts

在这两种情况下,pip或conda都应该下载所有必需的依赖项,并且应该能够启动程序。 为此,只需键入:

python -m dramatts.dramatts_gui

GUI应该会弹出,您可以导入文本文件、定义角色等,但是您将无法呈现音频,除非 您已经安装了Festival(及其组件)和SoX。在

有关详细信息,请参阅dramaTTS documentation。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓为什么Java AudioEffect不支持双簧管?   增加内存后出现java IntelliJ堆大小错误   在unix/linux中工作的java中将unicode字符串转换为ASCII   java是否缺少正确对齐输出的值?   java Spring 3 MVC:动态表单中的onetomany(创建/更新时添加/删除)   java在接口中创建两个通用参数   lambda使用Java 8从嵌套列表中使用forEach查找项的替代方法是什么?   Java正则表达式匹配10位电话号码,中间有空格   linux将log4j外部化。使用命令行Java的属性文件   带有SSL的java简单RMI服务器   java无法为事务[…]打开JPA EntityManager无法获取驱动程序类“null”和URL“null”的连接   Android设备上的java Oauth Foursquare   for循环的ImageButton名称的java骰子模拟浓缩   java有没有简单的1d条形码阅读器?   如何在调用resultset后解决“无效字符串或缓冲区长度”。从java到访问mdb的getString()连接   在Java8中,是否可以使用JVM参数来控制何时(或在什么条件下)卸载类?