
波斯TTS是一个简单的文本到讲话综合引擎和反应式应用程序,我最初是作为我的学士学位毕业项目开发的。
但是,该项目旨在随着时间的推移逐步改进。


![]()
![]()
![]()
波斯语-TTS应用程序由React Antial供电,因此您需要它才能正确编译应用程序。要编译Android版本,在计算机上具有适当的Android SDK是必须的,显然是汇编iOS变量的需要,您需要在MacOS操作系统供电的机器上拥有一个工作的Xcode副本和功能性的Cocoapods依赖性管理工具。
您还需要拥有一个依赖性管理工具,以访问NPM和下载项目的依赖项。该项目使用纱线,但也可以使用NPM或其他工具。
首先,您可以通过克隆来获取源代码
git clone [email protected]:amfolio/persian-tts.git cd ios
pod install然后移动到包装的目录并使用yarn install或npm install安装其依赖项
要在Android和/或iOS操作系统的模拟器中启动应用程序,您可以使用以下命令:
react-native run-androidreact-native run-ios该项目的结构与许多其他反应项目结构相同。下面只是主要结构的全局:
不久,该项目使用“串联合成”评估来实现其目标。在波斯语中,可以通过将“辅音+元音”对构造一组无限的单词。为了勇敢,我们将这些对称为“音节”。
为了使综合作品最初有一组169个音节声音,从我自己的声音中重新编码(所以这不是专业的叙述?)。这个数字被以波纹管的形式驱动:
| 语音类型 | 相应的文件计数 |
|---|---|
| 元音 | 6 |
| 沉默的辅音 | 23 |
| 音节(辅音+元音) | 138 |
| 空间 | 2 |
| 全部的 | 169 |
然后,通过使用ffmpeg库串联音节及其是反应 - ffmpeg包装器,可以使综合过程变得可行。这是发生的事情的快速模式。
在第一步中,使用TextTophonems实用程序函数创建了波斯输入的语音对应。
const input = "سلام" ; // means "Hello" in persian
const output = textToPhonems ( input ) ; // ["sa", "lā", "m"];步骤1的结果通过phonemstoffmpeg实用程序函数,并获得有效的ffmpeg conmantation命令:
const ffmpeg = phonemsToFFMpeg ( output ) ;结果将是:
ffmpeg
-I sa.wav -I lā.wav -I m.wav
-filter_complex ‘[0:0][1:0][2:0]concat=n=3:v=0:a=1[out]’
-map ‘[out]’ output.wav该应用程序使用React-Native-FFMPEG调用FFMPEG,并且以下步骤在幕后完成:
| 在串联之前 | ||
![]() | ![]() | ![]() |
| sa.wav | lā.wav | M.Wav |
| 升离后 | ||
![]() | ||
| output.wav | ||
借助React-Native-Sound库,输出音频文件可以通过iOS和Android平台播放。读取捆绑资源并将其转移到沙箱/SD卡位置,这也可以归功于React-Native-fs
特别感谢我的项目导演穆罕默德·塔赫里(Mohammad Taheri)博士,他让我有信心接近这个主题,并指导我采取了最好的步骤,以使其成为可能。没有他,我可能永远不会从事这样的学术研究。
下一个非常感谢的是开发人员社区,他们与他人慷慨地共享尖端技术。仅仅由于这个社区而不再需要重新发明车轮。
这是一个简短的图书馆清单,他们在发展道路上无限地帮助我:
该存储库最初是为波斯语言开源文本到语音解决方案构建的。我将非常感谢报告对错误的问题和改进的任何贡献。
通过向项目添加更多声音来贡献也受到了高度欢迎,您也可以在Voices.json中提及您的名字。
如果有任何必要,请随时发送拉动请求。