関数が最初の実行時に出力を持たない場合、以下の関数が1
の代わりにNone
を出力しているように見えることがわかりました。再帰関数が意図した値を出力しない
import win32com.client
BING_KEY = "XXXXXXXX"
import speech_recognition as sr
import win32com.client as wincl
s = sr.Recognizer()
def hey_pc():
print(" Hey PC = Command")
with sr.Microphone() as source:
audio = s.listen(source)
try:
x= (s.recognize_bing(audio, key=BING_KEY))
if x in ['hey PC']:
return 1
else: hey_pc()
except:
print('Try again')
hey_pc()
t = hey_pc()
print t
その最初の実行上の機能出力は、私は次の出力を得る場合:
Hey PC == Command 1
をしかし、それはその再帰的なプロパティを呼び出した場合、私はNone
Hey PC == Command
Hey PC == Command
Hey PC == Command
Hey PC == Command
None
の最終的な出力を得ます
またはこれ
Hey PC == Command
Try again
Hey PC == Command
Hey PC == Command
None
私はなし "mはなっていない『なぜ私は理解していない』
EDIT:。
私はこれにコードの2番目の部分を変更し、周りの人がプレイしましたが、まだ同じ問題を抱えているしました:私の声は、その最初の試みで認識されている場合は
t =hey_pc()
if t == 1:
speak = wincl.Dispatch("SAPI.SpVoice")
speak.Speak("This is the pc voice speaking")
import automation
automation.Apply_Command()
else:
hey_pc()
、if t==1
下のコードは、しかし、私の声は一度、アクティブ化されたコードの最初の試みとrecurvise部分で認識されていない場合は、そこに何の問題も走っていないとされた私の最終的に音声が認識され、プログラムが終了します(つまり、 Pythonコマンドプロンプト>>>
が再びポップアップします)。だから私はそれが渡されているnull値だと仮定しています。
まだ困惑しています。 :(
しかし、関数が円滑に実行されると(関数の再帰部分を呼び出さずに)出力が1になります。上記の関数を実行し、 '再試行 'や' Hey PC'出力を何度も呼び出さずに出力を得ることができます(再帰部分が機能していることを示します)、出力を得ることができます1. あなたは私が何を言おうとしているのか理解できますように。 – Moondra