歡迎來到568edu,一說到讓機器說話,就要想到TTS(Text To Speech),意思就是把原本是字串(文字)的部分,轉換成語音唸出來。TTS技術已經非常成熟,也是讓機器人可以與人類溝通的利器,利用TTS技術可以讓機器說話,讓人類可以快速的理解。在此介紹如何快速在python中運用TTS技術,首先必須確認python環境中有三個模組 第一個是gtts 第二個是pygame 第三個是tempfile,請先到命令模式(俗稱小黑窗),去安裝這三個模組。
pip install gtts
pip install pygame
pip install tempfile
由於我們是利用anaconda套件,所以記得要開anaconda專用的命令模式唷!如此才會把模組裝入anaconda的python裡面。

開始小黑窗後,一次安裝一個模組,依序確保安裝完 gtts pygame tempfile , 其中tempfile有可能早已經有安裝了,不過為了確保一定有,多個動作安心。

開工吧
開個新檔案,一開始把要使用的模組引入,也就是剛剛安裝那三個。
from gtts import gTTS
from pygame import mixer
import tempfile
引入模組的命令有下列兩種,第一種是from 大模組 import 小模組;第二種就是直接import 模組
差別就是因為大模組裡面有很多小模組,你又不一定會用到這些小模組,所以就不全部引入,只要引入會用到的 就可以用from import
#初始化混音器mixer
mixer.init()
#開啟一個暫時用的檔案,並利用tts讀取文字轉存成mp3,利用混音器的play來播出
with tempfile.NamedTemporaryFile(delete=True) as fp:
tts = gTTS(text="你知道嗎?機器人不會有香港腳唷", lang='zh-tw')
tts.save("{}.mp3".format(fp.name))
mixer.music.load('{}.mp3'.format(fp.name))
mixer.music.play()
接下來就是初始化一個混音器,利用這個混音器把聲音播出來,把想要機器人唸出來的文字放在text=”想要念出來的字”,當程式執行時,就會唸出那些指定的文字。
善用自訂函式
每次要唸出文字都要打那一大段,非常的不方便,所以來自訂一個方便使用的函式,假設想要寫成一個叫新的函式叫做say(“想說的話”),該怎麼做呢?
def say(words):
#初始化混音器mixer
mixer.init()
#開啟一個暫時用的檔案,並利用tts讀取文字轉存成mp3,利用混音器的play來播出
with tempfile.NamedTemporaryFile(delete=True) as fp:
tts = gTTS(text=words, lang='zh-tw')
tts.save("{}.mp3".format(fp.name))
mixer.music.load('{}.mp3'.format(fp.name))
mixer.music.play()
當你定義好這個函式時,接下來只要使用say(“要說的話”)就可以讓機器唸出要說的話了。
say("大家好! 我是帥哥 aka 天母金城武!")
搞定說話之後,接下來就來準備讓機器會聽你說話了! 機器人的聽─利用STT讓你的機器人會聽你說話