python之語音識別speech模塊
1.原理
語音操控分為 語音識別和語音朗讀兩部分。
這兩部分本來是需要自然語言處理技能相關(guān)知識以及一系列極其復(fù)雜的算法才能搞定,可是這篇文章將會跳過此處,如果你只是對算法和自然語言學(xué)感興趣的話,就只有請您移步了,下面沒有一個字會講述到這些內(nèi)容。
早在上世紀(jì)90年代的時候,IBM就推出了一款極為強(qiáng)大的語音識別系統(tǒng)-vio voice , 而其后相關(guān)產(chǎn)品層出不窮,不斷的進(jìn)化和演變著。 我們這里將會使用SAPI實(shí)現(xiàn)語音模塊。
2. 什么是SAPI?
SAPI是微軟Speech API , 是微軟公司推出的語音接口,而細(xì)心的人會發(fā)現(xiàn)從WINXP開始,系統(tǒng)上就已經(jīng)有語音識別的功能了,可是用武之地相當(dāng)之少,他并沒有給出一些人性化的自定義方案,僅有的語音操控命令顯得相當(dāng)雞脅。 那么這篇文章的任務(wù)就是利用SAPI進(jìn)行個性化的語音識別
代碼
前提:打開win7的語音自動識別(控制面板--輕松訪問--語音識別)
#!/usr/bin/env python # -*- codinfg:utf-8 -*- ''' @author: Jeff LEE @file: .py @time: 2018-07-19 11:15 @desc: ''' from win32com.client import constants import os import win32com.client import pythoncom speaker = win32com.client.Dispatch("SAPI.SPVOICE") class SpeechRecognition: def __init__(self, wordsToAdd): self.speaker = win32com.client.Dispatch("SAPI.SpVoice") self.listener = win32com.client.Dispatch("SAPI.SpSharedRecognizer") self.context = self.listener.CreateRecoContext() self.grammar = self.context.CreateGrammar() self.grammar.DictationSetState(0) self.wordsRule = self.grammar.Rules.Add("wordsRule", constants.SRATopLevel + constants.SRADynamic, 0) self.wordsRule.Clear() [self.wordsRule.InitialState.AddWordTransition(None, word) for word in wordsToAdd] self.grammar.Rules.Commit() self.grammar.CmdSetRuleState("wordsRule", 1) self.grammar.Rules.Commit() self.eventHandler = ContextEvents(self.context) self.say("Started successfully") def say(self, phrase): self.speaker.Speak(phrase) class ContextEvents(win32com.client.getevents("SAPI.SpSharedRecoContext")): def OnRecognition(self, StreamNumber, StreamPosition, RecognitionType, Result): newResult = win32com.client.Dispatch(Result) print("你在說 ", newResult.PhraseInfo.GetText()) speechstr=newResult.PhraseInfo.GetText() # 下面即為語音識別信息對應(yīng),打開響應(yīng)操作 if speechstr=="記事本": os.system('notepad') elif speechstr=="寫字板": os.system('write') elif speechstr=="畫圖板": os.system('mspaint') else: pass if __name__ == '__main__': speaker.Speak("語音識別開啟") wordsToAdd = ["記事本", "寫字板","畫圖板",] speechReco = SpeechRecognition(wordsToAdd) while True: pythoncom.PumpWaitingMessages()
調(diào)試遇到問題
python調(diào)用語音模塊時,遇見TypeError:NoneTypetakesnoarguments這種錯誤類型該如何解決
報錯的原因是:不能調(diào)用語音開發(fā)包
解決方法:(如果你已經(jīng)安裝了pyWin32,它也安裝了PythonWin)
1.在python35目錄中找到pythonwin文件夾下的pythonwin.exe
2.雙擊Pythonwin運(yùn)行,然后選擇工具tools/commakepyutility
3.然后選擇MicrosoftSpeechObjectLibrary5.4,點(diǎn)擊OK鍵
4.運(yùn)行結(jié)果如下,問題解決
后記
推薦一個不錯的語音識別文檔:http://chabaoo.cn/article/195212.htm
到此這篇關(guān)于python之語音識別speech模塊的文章就介紹到這了,更多相關(guān)python 語音識別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)視頻自動打碼的示例代碼
我們在觀看視頻的時候,有時候會出現(xiàn)一些奇怪的馬賽克,影響我們的觀影體驗(yàn),那么這些馬賽克是如何精確的加上去的呢?本文就來為大家詳細(xì)講講2022-04-04python人工智能tensorflow常用激活函數(shù)Activation?Functions
這篇文章主要為大家介紹了python人工智能tensorflow常用激活函數(shù)Activation?Functions的匯總介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python基于keras訓(xùn)練實(shí)現(xiàn)微笑識別的示例詳解
Keras是一個由Python編寫的開源人工神經(jīng)網(wǎng)絡(luò)庫,可用于深度學(xué)習(xí)模型的設(shè)計、調(diào)試、評估、應(yīng)用和可視化。本文將基于keras訓(xùn)練實(shí)現(xiàn)微笑識別效果,需要的可以參考一下2022-01-01