相信很多人都有每週收看狂新聞的習慣,而且對於那個配音非常感冒,但是也很好笑。其實那個配音是Google的Text to Speech的標準聲音,只要透過適當的管道,任何人都可以把自訂的文字內容使用gTTS來產生出那個好好笑的配音,這篇文章就用一個簡單的Python程式,讓大家也可以自由地產生任意文字的MP3語音檔拿來使用。

直接看程式好了:

#encoding: utf-8
from gtts import gTTS
import tempfile
from pygame import mixer

def say(text, filename=None):
    with tempfile.NamedTemporaryFile(delete=True) as temp:
        tts = gTTS(text, lang='zh')
        if filename is None:
            filename = "{}.mp3".format(temp.name)
        tts.save(filename)
        mixer.init()
        mixer.music.load(filename)
        mixer.music.play()
        while mixer.music.get_busy() == True:
            continue
        mixer.quit()
say("歡迎收看本週狂新聞")
say("有了這個程式,你也可以自己做狂新聞的配音了", "introduction.mp3")

要執行這個程式必須要安裝gtts、tempfile、以及pygame,使用pip或是conda install都可以輕易地完成安裝。由上述的程式碼可以看出,我們做了一個叫做say的函數,這個函數接收1~2個參數,如果只輸入要轉成語音的字串,那麼這個語音就只會被播放出來,而使用的暫存檔案在語音播放完畢之後就會被刪除。反之,如果我們在say的參數中除了有要轉成語音的文字之外再加上一個字串,則該字串就是一個檔案名稱,以上述的程式碼為例,我們輸入的是”introduction.mp3″,則在此程式執行之後會產生一個introduction.mp3的檔案,這個檔案就可以被拿來使用了。