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

后記
推薦一個(gè)不錯(cuò)的語(yǔ)音識(shí)別文檔:http://www.dbjr.com.cn/article/195212.htm
到此這篇關(guān)于python之語(yǔ)音識(shí)別speech模塊的文章就介紹到這了,更多相關(guān)python 語(yǔ)音識(shí)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python實(shí)現(xiàn)語(yǔ)音識(shí)別和語(yǔ)音合成功能
- python3實(shí)現(xiàn)語(yǔ)音轉(zhuǎn)文字(語(yǔ)音識(shí)別)和文字轉(zhuǎn)語(yǔ)音(語(yǔ)音合成)
- python語(yǔ)音識(shí)別的轉(zhuǎn)換方法
- 基于Python創(chuàng)建語(yǔ)音識(shí)別控制系統(tǒng)
- 基于Python實(shí)現(xiàn)語(yǔ)音識(shí)別和語(yǔ)音轉(zhuǎn)文字
- python語(yǔ)音識(shí)別whisper的使用
- Linux下利用python實(shí)現(xiàn)語(yǔ)音識(shí)別詳細(xì)教程
- 基于Python實(shí)現(xiàn)語(yǔ)音識(shí)別功能
- Python實(shí)現(xiàn)語(yǔ)音識(shí)別vosk的示例代碼
相關(guān)文章
Python實(shí)現(xiàn)視頻自動(dòng)打碼的示例代碼
我們?cè)谟^(guān)看視頻的時(shí)候,有時(shí)候會(huì)出現(xiàn)一些奇怪的馬賽克,影響我們的觀(guān)影體驗(yàn),那么這些馬賽克是如何精確的加上去的呢?本文就來(lái)為大家詳細(xì)講講2022-04-04
python人工智能tensorflow常用激活函數(shù)Activation?Functions
這篇文章主要為大家介紹了python人工智能tensorflow常用激活函數(shù)Activation?Functions的匯總介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Python基于keras訓(xùn)練實(shí)現(xiàn)微笑識(shí)別的示例詳解
Keras是一個(gè)由Python編寫(xiě)的開(kāi)源人工神經(jīng)網(wǎng)絡(luò)庫(kù),可用于深度學(xué)習(xí)模型的設(shè)計(jì)、調(diào)試、評(píng)估、應(yīng)用和可視化。本文將基于keras訓(xùn)練實(shí)現(xiàn)微笑識(shí)別效果,需要的可以參考一下2022-01-01

