現時点での私の完全なプロジェクトである以下のソースを含めました。私がこれまで取り組んできたのは、フレーズを入力し、(AIML データベースから) 応答を受け取り、各文字を受け取り、その文字の .mp3 サウンドを 1 つずつ再生して BASIC トランスレータを作成するターミナル インターフェイスです。 (ここではR2D2)。いくつかの問題があります。1 つ目は、初めてフレーズを入力したときは (出力が完全に変換されるという点で) 正常に機能しますが、その後、インデックス エラーが発生し、ターミナルが閉じます。(図 1 を参照) 何が問題なのかはわかりませんが、while ループに問題がある可能性があります。
私が抱えているもう1つの問題は、これを音声インターフェイスで使用する予定であるため、何かを言うと、STTエンジンを介して実行され、私が言ったことを文字列として出力します。その文字列を PyAIML への入力として指定し、応答を取得して、このプログラムのように翻訳したいと考えています。私が抱えている問題は、PyAIML への入力として使用できる変数を作成する方法です。これを行う方法はありますか?
import aiml
import os
import time
def translate():
if char == 'a':
os.system("start a.mp3")
elif char == 'b':
os.system("start b.mp3")
#This continues for all the letters of the alphabet - you get the idea
else:
time.sleep(0.1),
k = aiml.Kernel()
k.learn("std-startup.xml")
k.respond("load aiml b")
while True:
string = k.respond(raw_input("> "))
input = string.lower()
numChar = len(input)
n = 0
m = 0
char = input[n]
while m < numChar:
translate()
time.sleep(0.25),
n = n + 1
char = input[n]
m = m + 1
注: 応答は機能します。出力が翻訳された後、このエラーが発生します。