Ich möchte immer die Schwelle für Programmierung und CG-Produktion senken, aber Maya möchte auch mit Spracherkennung arbeiten, deshalb recherchiere ich viel.
Dieser Artikel hat noch nicht die Arbeit mit Maya erreicht.
Dies ist nur ein Test der Microsoft Speech API, die standardmäßig mit Windows geliefert wird.
Windows10 Python 2.7.12 pywin32==220
python -m virtualenv venv
venv\Scripts\activate.bat
Wenn das folgende Programm ausgeführt wird, wartet es auf die Spracheingabe mit der Meldung "Bereit", und als Antwort auf die Stimmen "Eins", "Zwei", "Drei", "Vier" und "Hallo" wird eine Zeichenfolge an die Standardausgabe ausgegeben.
main.py
#!/usr/bin/env python
# coding=utf-8
from __future__ import absolute_import, division, print_function
from win32com.client import constants
import win32com.client
import pythoncom
class ContextEvents(win32com.client.getevents("SAPI.SpSharedRecoContext")):
u"""Rückrufklasse, die aufgerufen wird, wenn eine Phrase erkannt wird
Registrieren Sie Wörter im Voraus.
"""
def OnRecognition(self, StreamNumber, StreamPosition, RecognitionType, Result):
newResult = win32com.client.Dispatch(Result)
print(u"You said: {0}".format(newResult.PhraseInfo.GetText()))
class SpeechRecognition(object):
def __init__(self, wordsToAdd):
u"""Verschiedene Initialisierungen"""
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()
for word in wordsToAdd:
self.wordsRule.InitialState.AddWordTransition(None, word)
self.grammar.Rules.Commit()
self.grammar.CmdSetRuleState("wordsRule", 1)
self.grammar.Rules.Commit()
self.eventHandler = ContextEvents(self.context)
self.say(u"Junbikanryo")
def say(self, phrase):
u"""Lass mich reden"""
self.speaker.Speak(phrase)
if __name__ == '__main__':
wordsToAdd = ["One", "Two", "Three", "Four", u"Hallo"]
speechReco = SpeechRecognition(wordsToAdd)
while True:
pythoncom.PumpWaitingMessages()
Es tut mir leid, unabhängig von Maya.
[Spielen Sie COM mit Python + pywin32, um zu sprechen. ](Https://mimumimu.net/blog/2011/07/02/python-pywin32-%E3%81%A7-com-%E5%8F%A9%E3%81%84%E3%81%A6% E3% 81% 97% E3% 82% 83% E3% 81% B9% E3% 82% 89% E3% 81% 9B% E3% 82% 8B% E3% 80% 82 /) Python: win32com.client.getevents(“SAPI.SpSharedRecoContext”) returns None
Recommended Posts