1. 程式人生 > >Python實現文字轉語音功能

Python實現文字轉語音功能

這是一篇簡單的Python文字(漢字)轉語音教程,當然對於其他語言工具在實現的方法上也是一樣的 。

在自然語言處理上,文字、音訊互轉是一個很關鍵的技術點。對於語音轉文字,這個個人實現較為困難,我們可以使用語音轉文字的軟體或藉助各API(如科大訊飛等)進行移植開發。不過文字轉語音就相對而言容易實現很多了。

簡言之, 漢字轉語音實現就分為兩步,第一步將漢字轉為拼音,第二步通過拼音呼叫相匹配的音訊檔案。下面是具體的開發例項教程。

  • 開發環境:Windows

  • Python版本:3.x

  • 外接模組準備:pygame(可直接在cmd命令列中pip install pygame安裝)

漢字轉拼音

我使用的是將漢字轉為Unicode碼,然後通過查詢一個匹配檔案(我使用的是unicode_py.txt)獲取該漢字的拼音,該檔案中列有從4E00-9FA5標準漢字的Unicode編碼所對應的拼音,外加一個落單的3007編碼的“〇”。

檔案如下:

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

檔案連結:連結: pan.baidu.com/s/1nwhSnD 密碼: 73yk
在大寫拼音英文後的1,2,3,4,5分別表示一,二,三,四和輕聲(注意到存在有多音字)

我們將其封裝成一個函式,引數為一個全是漢字的字串,返回是一個拼音字串。(即chinese_to_pinyin("秋水共長天一色") 返回的是"QIU1 SHUI3 GONG4 CHANG2 TIAN1 YI1 SE4 ")

原始碼如下:

640?wx_fmt=jpeg

說明:將該檔案與"unicode_py.txt"檔案放在同一目錄下,程式碼比較簡陋,因為主要給大家講實現教學,所以沒有對多音字進行處理(所以預設使用第一個使用頻率最高的音)

拼音轉語音

這一步也比較簡單,我們根據拼音呼叫相對應的單個音的音訊檔案即可。單個音的音訊檔案可以自己錄或找人錄,渠道有很多哦。注意檔案格式,最好是mp3或wav檔案。

部分檔案展示如下:

640?wx_fmt=jpeg

我們將其置入一個voice資料夾下。準備工作就做好了。

我們同樣將漢字轉語音封裝成一個make_voice函式,引數為一個漢字字串,然後呼叫chinese_to_pinyin函式,返回值不重要,可為空,功能實現是呼叫音訊檔案發音。

原始碼如下:

640?wx_fmt=jpeg

我們展示一下這個教學版的最後完整的程式碼圖(該檔名為"test.py"):

640?wx_fmt=jpeg

教程檔案的目錄結構:

640?wx_fmt=jpeg

實現原理就是這樣,同時也可以視一些具體情況做一些拓展,例如將阿拉伯數字轉漢字讀法(即1234006.15讀作“一百二十三萬四千零六點一五”,這個實現不難),還有將多音字問題攻破也是很棒的。

當然只要想法夠豐富用pygame的音訊功能也能實現很多有趣的功能(如播放器製作或電子音樂簡單創作等)。

∞∞∞

640?wx_fmt=jpeg&wx_lazy=1

IT派 - {技術青年圈}持續關注網際網路、區塊鏈、人工智慧領域640?wx_fmt=jpeg&wx_lazy=1

公眾號回覆“Python”

邀你加入{ IT派Python技術群 }