Python文本語音識別模塊大比拼贤斜,看看青銅與王者的差別策吠!

關(guān)于作息問題

自從開始公眾號寫作议慰,作息問題就成了一件讓人很頭大的事情,相對平時學(xué)習(xí)時間的基礎(chǔ)上奴曙,每天需要再多抽出來至少兩個小時進(jìn)行公眾號寫作别凹,這些時間只能從睡眠中擠出來。別人研究怎么碎片化學(xué)習(xí)洽糟,我現(xiàn)在每天盤算的是怎么碎片化打盹炉菲。不知道該怎么解決作息的問題,好苦惱....

文本轉(zhuǎn)語音

如果把Python比喻成游戲中的一個英雄坤溃,你覺得它是誰拍霜?對于Dota老玩家來說,我會想到鋼琴手卡爾薪介!感覺Python和卡爾一樣祠饺,除了生孩子什么都可以做的角色。日常生活中汁政,我們會涉及到很多語音播報的場景道偷,比如郭德綱版的高德地圖導(dǎo)航、超市門口的紅外感知提醒歡迎光臨记劈、銀行的自助叫號系統(tǒng)勺鸦,等等...今天就和大家聊聊Python文本轉(zhuǎn)語音,看看這些從青銅到王者的模塊目木。

青銅-pywin32

通過pip install pywin32安裝模塊换途,pywin32是個萬金油的模塊,太多的場景使用到它刽射,但在文本轉(zhuǎn)語音上军拟,它卻是個青銅玩家,簡單無腦但效果不好誓禁。代碼示例:

import win32com.client

speaker = win32com.client.Dispatch("SAPI.SpVoice")
speaker.Speak("一天什么時候最安全懈息?中午,因為早晚會出事...")

因為這個模塊使用了很多次现横,自信執(zhí)行漓拾,結(jié)果報錯了....

Traceback (most recent call last):
File "D:\Python37\lib\site-packages\win32com\client\dynamic.py", line 89, in _GetGoodDispatch
IDispatch = pythoncom.connect(IDispatch)
pywintypes.com_error: (-2147221005, '無效的類字符串', None, None)

這個模塊之前在公司和家里筆記本用過很多次的,怎么會報錯呢戒祠?一臉懵逼...結(jié)果查了半天發(fā)現(xiàn)骇两,代碼在調(diào)用語音識別組件的時候報錯了。


語音識別組件

打開控制面板發(fā)現(xiàn)語音識別組件我的臺式機(jī)電腦沒有姜盈,原來現(xiàn)在很多GHOST版WIN系統(tǒng)為了精簡體積都去除了語音識別組件低千,所以在安裝語音朗讀語音叫號類軟件時,都不能正常發(fā)音。本來這種青銅小選手示血,像我這種王者級別的不羞于為伍棋傍,但既然是模塊介紹還是確定下到底是不是這個問題吧。網(wǎng)上找了一個語音識別的TTSwidnows補(bǔ)丁包安裝了一下难审,再次執(zhí)行成功瘫拣。如果跟我存在一樣問題的選手,可以網(wǎng)上搜索安裝一下告喊。下載補(bǔ)丁包執(zhí)行bat文件一鍵無腦安裝麸拄。
為什么說這個模塊是青銅,因為太無腦了黔姜,你填寫文本它默認(rèn)輸出拢切,沒有任何可配置的地方,而且語音生硬...

白銀-pyttsx3

pyttsx3 is a text-to-speech conversion library in Python.
Unlike alternative libraries, it works offline, and is compatible with both Python 2 and 3.

  • SAPI5 on Windows XP and Windows Vista and Windows 8,8.1 , 10
  • NSSpeechSynthesizer on Mac OS X 10.5 (Leopard) and 10.6 (Snow Leopard)
  • espeak on Ubuntu Desktop Edition 8.10 (Intrepid), 9.04 (Jaunty), and 9.10 (Karmic)

pyttsx3使用pyttsx移植過來的,因為pyttsx不支持python3...針對不同的系統(tǒng),模塊會自動所有系統(tǒng)對應(yīng)的語音驅(qū)動秆吵,前提是你的系統(tǒng)存在該驅(qū)動...
它依賴pywin32模塊淮椰,可以說它時針對無腦的pywin32接口,進(jìn)行了升級的個性化配置主穗。先來看下最簡單的使用:

import pyttsx3
engine = pyttsx3.init()
engine.say("明天你好爷肝,我叫干不倒音瓷!")
engine.runAndWait()

代碼初始化模塊后纵竖,填寫你所需轉(zhuǎn)化的文本靡砌,之后執(zhí)行runAndWait方法完成語音轉(zhuǎn)化厕宗。再來看看其相關(guān)操作:

事件監(jiān)聽
import pyttsx3

def onStart(name):
    print('starting', name)

def onWord(name, location, length):
    print('word', name, location, length)

def onEnd(name, completed):
    print('finishing', name, completed)

engine = pyttsx3.init()
engine.connect('started-utterance', onStart)
engine.connect('started-word', onWord)
engine.connect('finished-utterance', onEnd)
engine.say('The quick brown fox jumped over the lazy dog.')
engine.runAndWait()
中斷話語
import pyttsx3
def onWord(name, location, length):
   print 'word', name, location, length
   if location > 10:
      engine.stop()
engine = pyttsx3.init()
engine.connect('started-word', onWord)
engine.say('The quick brown fox jumped over the lazy dog.')
engine.runAndWait()
改變聲音
import pyttsx3
engine = pyttsx3.init()
voices = engine.getProperty('voices')
for voice in voices:
   engine.setProperty('voice', voice.id)
   engine.say('The quick brown fox jumped over the lazy dog.')
engine.runAndWait()
改變語速
import pyttsx3
engine = pyttsx3.init()
rate = engine.getProperty('rate')
engine.setProperty('rate', rate+50)
engine.say('The quick brown fox jumped over the lazy dog.')
engine.runAndWait()
改變音量
import pyttsx3
engine = pyttsx3.init()
volume = engine.getProperty('volume')
engine.setProperty('volume', volume-0.25)
engine.say('The quick brown fox jumped over the lazy dog.')
engine.runAndWait()
運(yùn)行驅(qū)動程序事件循環(huán)
import pyttsx3
engine = pyttsx3.init()
def onStart(name):
   print 'starting', name
def onWord(name, location, length):
   print 'word', name, location, length
def onEnd(name, completed):
   print 'finishing', name, completed
   if name == 'fox':
      engine.say('What a lazy dog!', 'dog')
   elif name == 'dog':
      engine.endLoop()
engine = pyttsx3.init()
engine.connect('started-utterance', onStart)
engine.connect('started-word', onWord)
engine.connect('finished-utterance', onEnd)
engine.say('The quick brown fox jumped over the lazy dog.', 'fox')
engine.startLoop()
使用外部事件循環(huán)
import pyttsx3
engine = pyttsx3.init()
engine.say('The quick brown fox jumped over the lazy dog.', 'fox')
engine.startLoop(False)
# engine.iterate() must be called inside externalLoop()
externalLoop()
engine.endLoop()

模塊總體配置就是這些乍丈,針對pywin32的封裝做的還是不錯的...

王者-百度語音識別api

百度語音識別api:baidu-aip是百度開放的公共語音轉(zhuǎn)化服務(wù)请垛。只需要在百度注冊相關(guān)的app及秘鑰信息即可使用。

百度語音識別注冊.png

使用流程如下:

  1. 訪問語音合成-百度AI開放平臺:http://ai.baidu.com/tech/speech/tts
  2. 之后使用百度賬號即可登陸(沒有百度賬號的礼旅,自己注冊一個)
  3. 創(chuàng)建應(yīng)用,添加語音識別的功能饿自,并完成注冊
  4. 保存你的app_id, API_Key, Secret_Key 三項數(shù)據(jù)留著后續(xù)使用
  5. 切換回語音合成首頁汰翠,點(diǎn)擊立即使用旁邊的技術(shù)文檔按鈕,進(jìn)入API文檔
  6. 定位 語音合成-->SDK文檔-->Python SDK昭雌,即可看到詳細(xì)的開發(fā)文檔說明


    百度賬號登陸.png

    image.png

接下來复唤,我們看看文檔中的相關(guān)說明:

  • 接口描述
    基于該接口,開發(fā)者可以輕松的獲取語音合成能力
  • 請求說明
    合成文本長度必須小于1024字節(jié)城豁,如果本文長度較長苟穆,可以采用多次請求的方式。文本長度不可超過限制
    舉例,要把一段文字合成為語音文件:
from aip import AipSpeech

""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

result  = client.synthesis('你好百度', 'zh', 1, {
    'vol': 5,
})

# 識別正確返回語音二進(jìn)制 錯誤則返回dict 參照下面錯誤碼
if not isinstance(result, dict):
    with open('auido.mp3', 'wb') as f:
        f.write(result)

在上面代碼中雳旅,常量APP_ID在百度云控制臺中創(chuàng)建跟磨,常量API_KEY與SECRET_KEY是在創(chuàng)建完畢應(yīng)用后,系統(tǒng)分配給用戶的攒盈,均為字符串抵拘,用于標(biāo)識用戶,為訪問做簽名驗證型豁,可在AI服務(wù)控制臺中的應(yīng)用列表中查看僵蛛。

參數(shù) 類型 描述 是否必須
text String 合成的文本,使用UTF-8編碼迎变,請注意文本長度必須小于1024字節(jié)
cuid String 用戶唯一標(biāo)識充尉,用來區(qū)分用戶,填寫機(jī)器 MAC 地址或 IMEI 碼衣形,長度為60以內(nèi)
speed String 語速驼侠,取值0-9,默認(rèn)為5中語速
pit String 音調(diào)谆吴,取值0-9倒源,默認(rèn)為5中語調(diào)
vol String 音量,取值0-15句狼,默認(rèn)為5中音量
per String 發(fā)音人選擇, 0為女聲笋熬,1為男聲,3為情感合成-度逍遙腻菇,4為情感合成-度丫丫胳螟,默認(rèn)為普通女

相比于前兩種模塊,baidu-aip卻是高端很多啊...喜歡的朋友可以下載了玩玩筹吐,感興趣的朋友可以看看我之前發(fā)表的文章使用Python將任正非400+篇演講批量轉(zhuǎn)化為語音http://www.reibang.com/p/05f9874b6989

The End

OK,今天的內(nèi)容就到這里旺隙,如果覺得內(nèi)容對你有所幫助,歡迎點(diǎn)擊文章右下角的“在看”骏令。
期待你關(guān)注我的公眾號清風(fēng)Python,如果覺得不錯垄提,希望能動動手指轉(zhuǎn)發(fā)給你身邊的朋友們榔袋。
希望每周一至五清晨的7點(diǎn)10分,都能讓清風(fēng)Python的知識文章叫醒大家铡俐!謝謝……

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凰兑,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子审丘,更是在濱河造成了極大的恐慌吏够,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異锅知,居然都是意外死亡播急,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門售睹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來桩警,“玉大人,你說我怎么就攤上這事昌妹〈肥啵” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵飞崖,是天一觀的道長烂叔。 經(jīng)常有香客問我,道長固歪,這世上最難降的妖魔是什么蒜鸡? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮昼牛,結(jié)果婚禮上术瓮,老公的妹妹穿的比我還像新娘。我一直安慰自己贰健,他們只是感情好胞四,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著伶椿,像睡著了一般辜伟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上脊另,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天导狡,我揣著相機(jī)與錄音,去河邊找鬼偎痛。 笑死旱捧,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的踩麦。 我是一名探鬼主播枚赡,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谓谦!你這毒婦竟也來了贫橙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤反粥,失蹤者是張志新(化名)和其女友劉穎卢肃,沒想到半個月后疲迂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡莫湘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年尤蒿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逊脯。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡优质,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出军洼,到底是詐尸還是另有隱情巩螃,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布匕争,位于F島的核電站避乏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏甘桑。R本人自食惡果不足惜拍皮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望跑杭。 院中可真熱鬧铆帽,春花似錦、人聲如沸德谅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽窄做。三九已至愧驱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間椭盏,已是汗流浹背组砚。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留掏颊,地道東北人糟红。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像乌叶,于是被迫代替她去往敵國和親改化。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 心在揍鸟,夢在兄裂。草枯花落句旱,沙漠荒蕪,心中要保持一片花鳥蟲魚的綠洲晰奖。心不荒蕪谈撒,夢就不會蹉跎。 1 mamba out! ...
    易燃易爆品閱讀 471評論 0 0
  • 精力是否可以通過工具覆蓋 機(jī)會無處不在模式 能力圈 勝率 策略:控制虧損匾南,提升勝率
    新鮮R閱讀 99評論 0 0
  • 鵲仙橋上許久才相見的 除了一宿淚眼 還有 日日夜夜 風(fēng)風(fēng)雨雨 烙下的無數(shù)個 年年 歲歲
    道夫123閱讀 279評論 19 16
  • 《演員的誕生》這個節(jié)目好就在大家說真話蛆楞,單純的用演技來評判溯乒,讓人感覺少了很多編排感,像是戲劇學(xué)院的作業(yè)展示和老師點(diǎn)...
    做個演員閱讀 521評論 0 0
  • 不需要一個最淺的微笑豹爹,我已經(jīng) 滿足于整個屋子的空間 和一塊沒有用過的畫布 和充滿深情的抱怨 這就是全部平靜裆悄,對生活...
    倉巴閱讀 2,424評論 0 1