上一篇提到了關於操作以語音轉文字的應用,
今天就說一下怎麼用文字轉語音吧~
TTS其實在講的就是合成語音,
我們常常聽到的google小姐聲音,
即可透過gTTS來將文字轉為google語音,
在合成語音的資料庫當中,算是我們比較熟悉的,
其他也有許多使用免費的TTS服務可以搜尋得到,
當然也已經被大量運用在軟體開發上,
不過從入門開始的話,我們就先使用gTTS的應用作為示範吧
首先以pip安裝gTTS
pip install gTTS
安裝完畢之後,我們可以建立一個test.py檔案,
來用以下範例程式碼測試以gTTS來實現文字轉語音的應用:
#test.py
from gtts import gTTS
tts=gTTS(text='生日快樂', lang='zh-tw')
tts.save("./static/test.m4a")
這樣一來就能儲存一個.m4a格式的實體音訊檔案了,
是不是非常簡單呢
實際操作影片:
那麼,就直接來放到LINE BOT裡面進行測試看看囉,
邏輯跟圖片、語音訊息一樣,我們可以將文字轉為實體檔案之後,
再將實體檔案的路徑丟給LINE API,以進行音訊的傳送,
方法如下:
#views.py
domain = '更改為你的ngrok domain'
...
if isinstance(event, MessageEvent):
print(event.message.type)
if event.message.type=='text':
mtext = event.message.text
if mtext[0]==' ':
tts=gTTS(text=mtext, lang='zh-tw')
tts.save("./static/mtext.m4a")
url = 'https://'+domain+'/static/mtext.m4a'
print(url)
message.append(AudioSendMessage(original_content_url=url,duration=330*len(mtext)))
line_bot_api.reply_message(event.reply_token,message)
else:
message.append(TextSendMessage(text='文字訊息'))
line_bot_api.reply_message(event.reply_token,message)
由於要設定音訊的長度,這邊自定義即可,
我大概抓了一個字330毫秒的長度,來把用戶的文字訊息以音訊訊息回傳給用戶,
先簡單進行測試看看,先丟個出師表給他試試看,
結果順利的話就如下圖囉,
每一家的TTS SDK使用方法都不一樣,
所以這邊只是以gTTS作為範例簡單介紹如何將文字轉為語音囉~
如果覺得google小姐的聲音不好想換個TTS語音,
那要再另外參閱一下其他TTS的文檔,
基本上都還滿平易近人的