python之語音識(shí)別speech模塊
1.原理
語音操控分為 語音識(shí)別和語音朗讀兩部分。
這兩部分本來是需要自然語言處理技能相關(guān)知識(shí)以及一系列極其復(fù)雜的算法才能搞定,可是這篇文章將會(huì)跳過此處,如果你只是對(duì)算法和自然語言學(xué)感興趣的話,就只有請(qǐng)您移步了,下面沒有一個(gè)字會(huì)講述到這些內(nèi)容。
早在上世紀(jì)90年代的時(shí)候,IBM就推出了一款極為強(qiáng)大的語音識(shí)別系統(tǒng)-vio voice , 而其后相關(guān)產(chǎn)品層出不窮,不斷的進(jìn)化和演變著。 我們這里將會(huì)使用SAPI實(shí)現(xiàn)語音模塊。
2. 什么是SAPI?
SAPI是微軟Speech API , 是微軟公司推出的語音接口,而細(xì)心的人會(huì)發(fā)現(xiàn)從WINXP開始,系統(tǒng)上就已經(jīng)有語音識(shí)別的功能了,可是用武之地相當(dāng)之少,他并沒有給出一些人性化的自定義方案,僅有的語音操控命令顯得相當(dāng)雞脅。 那么這篇文章的任務(wù)就是利用SAPI進(jìn)行個(gè)性化的語音識(shí)別
代碼
前提:打開win7的語音自動(dòng)識(shí)別(控制面板--輕松訪問--語音識(shí)別)
#!/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()
# 下面即為語音識(shí)別信息對(duì)應(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("語音識(shí)別開啟")
wordsToAdd = ["記事本", "寫字板","畫圖板",]
speechReco = SpeechRecognition(wordsToAdd)
while True:
pythoncom.PumpWaitingMessages()
調(diào)試遇到問題
python調(diào)用語音模塊時(shí),遇見TypeError:NoneTypetakesnoarguments這種錯(cuò)誤類型該如何解決
報(bào)錯(cuò)的原因是:不能調(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é)果如下,問題解決

后記
推薦一個(gè)不錯(cuò)的語音識(shí)別文檔:http://www.dhdzp.com/article/195212.htm
到此這篇關(guān)于python之語音識(shí)別speech模塊的文章就介紹到這了,更多相關(guān)python 語音識(shí)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python實(shí)現(xiàn)語音識(shí)別和語音合成功能
- python3實(shí)現(xiàn)語音轉(zhuǎn)文字(語音識(shí)別)和文字轉(zhuǎn)語音(語音合成)
- python語音識(shí)別的轉(zhuǎn)換方法
- 基于Python創(chuàng)建語音識(shí)別控制系統(tǒng)
- 基于Python實(shí)現(xiàn)語音識(shí)別和語音轉(zhuǎn)文字
- python語音識(shí)別whisper的使用
- Linux下利用python實(shí)現(xiàn)語音識(shí)別詳細(xì)教程
- 基于Python實(shí)現(xiàn)語音識(shí)別功能
- Python實(shí)現(xiàn)語音識(shí)別vosk的示例代碼
相關(guān)文章
1 行 Python 代碼快速實(shí)現(xiàn) FTP 服務(wù)器
FTP 服務(wù)器,在此之前我都是使用Linux的vsftpd軟件包來搭建FTP服務(wù)器的,現(xiàn)在發(fā)現(xiàn)了利用pyftpdlib可以更加簡(jiǎn)單的方法即可實(shí)現(xiàn)FTP服務(wù)器的功能。下面小編給大家?guī)砹? 行 Python 代碼快速實(shí)現(xiàn) FTP 服務(wù)器,需要的朋友參考下2018-01-01
Python實(shí)現(xiàn)端口復(fù)用實(shí)例代碼
這篇文章主要介紹了Python實(shí)現(xiàn)端口復(fù)用實(shí)例代碼,需要的朋友可以參考下2014-07-07
Python基于Matplotlib庫(kù)簡(jiǎn)單繪制折線圖的方法示例
這篇文章主要介紹了Python基于Matplotlib庫(kù)簡(jiǎn)單繪制折線圖的方法,涉及Python Matplotlib庫(kù)的相關(guān)使用技巧,需要的朋友可以參考下2017-08-08
在python項(xiàng)目的docker鏡像里如何使用pdm管理依賴
在 DjangoStarter 項(xiàng)目中,我已經(jīng)使用 pdm 作為默認(rèn)的包管理器,不再直接使用 pip,所以部署的時(shí)候 dockerfile 和 docker-compose 配置需要修改一下,這篇文章主要介紹了在python項(xiàng)目的docker鏡像里使用pdm管理依賴,需要的朋友可以參考下2024-08-08
Python3 Tkinkter + SQLite實(shí)現(xiàn)登錄和注冊(cè)界面
這篇文章主要為大家詳細(xì)介紹了Python3 Tkinkter + SQLite實(shí)現(xiàn)登錄和注冊(cè)界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11
基于python實(shí)現(xiàn)微信好友數(shù)據(jù)分析(簡(jiǎn)單)
本文主要介紹利用網(wǎng)頁端微信獲取數(shù)據(jù),實(shí)現(xiàn)個(gè)人微信好友數(shù)據(jù)的獲取,并進(jìn)行一些簡(jiǎn)單的數(shù)據(jù)分析,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-02-02

