歡迎來到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裡面。

在程式集中尋找Anaconda Prompt

開始小黑窗後,一次安裝一個模組,依序確保安裝完 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讓你的機器人會聽你說話

You may also like...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *