Я включил приведенный ниже источник, который на данный момент является моим полным проектом. До сих пор я работал над терминальным интерфейсом, в который я ввожу фразу, а затем беру ответ (из базы данных AIML), беру каждую букву и по очереди проигрываю звук .mp3 для этой буквы, чтобы сделать BASIC-переводчик. (R2D2 здесь). Есть пара проблем. Во-первых, он отлично работает в первый раз, когда я ввожу фразу (в том смысле, что он отлично переводит вывод), но затем обнаруживает ошибку индекса, и терминал закрывается. (см. рисунок 1) Я не знаю, что с ним не так, но подозреваю, что это может быть что-то не так с моим циклом while.
Другая проблема, которая у меня есть, заключается в том, что я планирую использовать это с речевым интерфейсом, поэтому я что-то говорю, он проходит через механизм 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
Примечание: ответ работает; появляется эта ошибка после перевода вывода.