
波斯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中提及您的名字。
如果有任何必要,請隨時發送拉動請求。