使用Google Text To Speech發聲 - Python

Google翻譯應該大家都用過,除了可以翻譯之外,還具有把文字轉為聲音的功能,就是所謂的TTS(Text To Speech)。這次我透過Python將這項功能變成可程式化,讓我們可以結合這項功能做到更強的應用。

這裡的操作環境是在Ubuntu作業系統,因為Python已經預先安裝了,這樣就可以不用管Python的問題,在終端機環境直接可以執行Python程式。




1.
    程式碼是參考以下來源,範例屬於英文的發音系統,興趣的人不訪可以試試看。不過我們是講中文台灣人,接下來的內容就是要修改一下內容讓他可以做中文的TTS。 原版程式碼出處:
http://alexsleat.co.uk/2011/11/14/python-making-use-of-googles-text-to-speech-translation-tool/

2.
原始程式碼直接執行會有一點問題,沒有辦法聽到聲音,應該是因為url網址有問題,更正後應該是以下格式:
http://translate.google.com/translate_tts?ie=UTF-8&tl=zh&q=隨便打一串中文試試看
  • 紅色代表編碼
  • 藍色代表語言
  • 紫色代表文字 
現在這串網址是中文版,如果直接貼到瀏覽器其實也是可以聽到聲音的。如果是英文版,就要把語言改成tl=en然後每個單字之間都要有+的符號,如”text-to-speech-and-speech-recognition”。這份程式很容易理解,就是把Google所產生的音樂檔抓下來,然後進行播放。

3.
如果執行的過程中發生了pygst錯誤,導致無法順利聽到語音,就必須要安裝一pygst套件,用以下指令安裝完成。
$sudo apt-get install python-gst0.10

4.
由於英文的版本不會有編碼的問題,但這在中文環境中是很重要的,程式裡如果打入中文後應該會被terminal警告編碼錯誤,在開頭要把編碼設定成utf-8就是在程式碼開頭前加上:
#-*- coding=utf-8 -*-





中文版程式碼:


#-*- coding=utf-8 -*-
import sys #for cmd line argv
import time #for delay
import pygst #for playing mp3 stream
import gst # " "

#convert to google friendly url (with + replacing spaces)
tts_string = '隨便打一串中文試試看'
print tts_string

#use string in combination with the translate url as the stream to be played
music_stream_uri = 'http://translate.google.com/translate_tts?ie=UTF-8&tl=zh&q=' + tts_string
player = gst.element_factory_make("playbin", "player")
player.set_property('uri', music_stream_uri)
player.set_state(gst.STATE_PLAYING)
print music_stream_uri

#requires a delay, if the py process closes before the mp3 has finished it will be cut off.
time.sleep(12)



留言

  1. 感謝您的分享 !! 請問Window10 +py35下怎麼安裝gst 和 pygst? Google 的TTS API 是不是還沒support 中文?

    回覆刪除

張貼留言

Facebook

這個網誌中的熱門文章

[房屋]裝潢紀錄分享- 基本包冷氣管包梁工程。把冷氣管隱藏得無影無蹤

[心得]天作之合音樂劇「阿堯 Shemenayha」 at 台北表演藝術中心 大劇院

[印尼]印尼 巴淡島 旅遊 TOP 100量販超市必買商品推薦。咖啡、生活用品、泡麵

[工具]線上模擬器。簡單的硬體電路模擬小工具Falstad: Circuit Simulatior Applet

[台北]台北小巨蛋 冰上迪士尼。迪士尼主題花式溜冰的視覺饗宴

[食記]將捷金鬱金香酒店- 河畔餐廳 主餐+自助餐吃到飽心得

[食記]長生塩人 淡水店。夜晚才有的日式鹽味拉麵體驗心得

為您推薦