1. 程式人生 > >文本轉換成語音

文本轉換成語音

espeak tts 語音合成

“讓別人讀書給你聽”,在某些情況下是一種需求。從程序員的角度來說,就是要把“人”換成“程序”,讓程序來朗讀文字。滿足這個需求的關鍵技術點,是“文本轉換成語音”,簡稱TTS。

這次介紹的,並不是TTS實現的原理,而是TTS的應用,也就是基於特定的庫或開源項目的使用。對於原理的東西,小程在準備好理論的知識後再嘗試講解清楚。

TTS的實現,有不少項目,這裏介紹的是eSpeak。

本文介紹如何通過eSpeak來實現文本轉換成語音的功能。

eSpeak是一個語音生成(合成)器,它的官網地址是:
<http://espeak.sourceforge.net/>

在官網上,可以看到eSpeak的介紹是這樣的:

技術分享圖片

eSpeak的可執行程序的下載頁面是:
<http://espeak.sourceforge.net/download.html>

在下載頁面選擇相應平臺的程序包,下載,解壓後,可以看到這樣的程序目錄結構:
技術分享圖片

小程下載的是mac平臺的eSpeak-1.45.04版本。

在執行eSpeak之前,有什麽準備工作要做嗎?小程覺得,有幾個知識點是要註意到的:

* 在eSpeak目錄下面找到speek,這個是命令行的可執行程序,通過運行它來實現功能。讀者也可以給它設置一個環境變量,這樣就可以在任何路徑都能執行到這個程序。

* 目錄espeak-data,是語音包,支持什麽語言,就看這個目錄下面有什麽內容了。

* 執行speek程序時,可以用參數--path來指定speek使用的語音包,如果沒有指定,則默認在/usr/share目錄下面查找espeak-data,如果找不到會提示出錯。

* 讀者需要安裝portaudio,因為eSpeak依賴這個庫。小程在裝備其它環境時,就已經順帶安裝過portaudio了,讀者可以按照下面這個引導來安裝portaudio:

portaudio是一個跨平臺的音頻輸入輸出庫。在安裝portaudio之前,如果是在macos上,則先要安裝好xcode,並且保證“command line developer tools”已經安裝上,因為需要使用xcode的編譯器來make install。可以使用命令xcode-select --install來檢測是否已經安裝好command line developer tools,如果沒有就按提示安裝。

然後用brew來安裝portaudio:
brew install portaudio

其中,espeak-data是語音包。小程再重點介紹下它裏面的內容,可以參考下面幾個eSpeak程序目錄的截圖:
技術分享圖片
技術分享圖片

一切準備就緒之後,就可以執行speak命令行程序了。

speak的功能,就是把文本讀出來,或把“讀出來”的語音保存成wav文件。

至於,讀什麽文本(從哪裏讀)、以什麽語言讀、以什麽語速讀(等等),都可以通過參數來設置。

可以先看一下eSpeak有什麽樣的參數(./speak -h):
技術分享圖片

了解這些參數後,就可以執行speak來“朗讀”了,比如:

./speak -stdout "1 2 3 4 5 6 7" --path="./" -s 200 -v zh+f5
表示以中文女聲來數數,指定了語音包的位置,以及朗讀的速度。

再比如這些命令的截圖:
技術分享圖片
技術分享圖片
技術分享圖片

小程在macos上,下載下來的espeak,默認就支持中文語音即zh。但對於粵語,雖然在語音包中有zh-yue文件,但執行時聽不到聲音(espeak-1.45.04版本),小程沒有細究其中的原因。

最後,小程先讓eSpeak“讀出”一個wav文件,再讓讀者聽一聽,命令如下:

./speak -stdio "1 2 3 4 5 6 7 多勞多得!歡迎關註廣州小程微信公眾號" --path="./" -s 140 -v zh+f5 -w "welcome.wav"

讀者如果是在微信公眾號(廣州小程)打開這篇文章,那可以聽一下以下的wav文件(小程上傳的文件)。


總結一下,本文介紹了如何使用eSpeak來做到“讀出”文本,主要是一些參數的了解與使用,難度系數為低。

文本轉換成語音