文本轉換成語音
這次介紹的,並不是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來做到“讀出”文本,主要是一些參數的了解與使用,難度系數為低。
文本轉換成語音