Я редактирую свой вопрос, чтобы отразить проблему, возникшую в моем заявлении.
Я пытаюсь взять потоковое аудио и преобразовать его в текст, используя текст Google в речь.Затем передайте этот текст в качестве входных данных разговору, а не Уотсону.Затем Уотсон возвращает свой ответ.
Последняя половина прекрасно работает.
Проблема, с которой я столкнулся, заключается в том, что я не могу заставить скрипт передать текст из записанной речи в службу WatsonЯ создал.
Я не получаю ошибку, я просто ничего не получаю.Микрофон работает (я проверил его другим скриптом).Программа на самом деле указывает, что я мог понять мой ответ (без текста я предполагаю).Вот мой код
import os
import watson_developer_cloud
import speech_recognition as sr
from gtts import gTTS
import watson_developer_cloud
import time
# Set up Assistant service.
service = watson_developer_cloud.AssistantV1(
#username = 'USERNAME', # replace with service username
#password = 'PASSWORD', # replace with service password
iam_api_key = 'xxxxxxxxxx', # replace with service username
url = 'xxxxxxxxxx', # replace with service password
version = 'xxxxxxxxxx'
)
workspace_id = 'xxxxxxxxxxxxxx' # replace with workspace ID
def getaudiodevices():
devices = os.popen("arecord -l")
device_string = devices.read()
device_string = device_string.split("\n")
for line in device_string:
if line.find("card") != -1:
print("hw:" + line[line.find("card") + 5] + "," + line[line.find("device") + 7])
def speak(audiostring):
print(audiostring)
tts = gTTS(text=audiostring, lang='en')
tts.save('audio.mp3')
os.system('mpg321 audio.mp3')
def recordaudio():
# Record Audio
r = sr.Recognizer()
with sr.Microphone(0) as source:
print("Say something!")
audio = r.listen(source,phrase_time_limit=10)
# Speech recognition ******
data = " "
try:
data = r.recognize_google(audio)
print("You said: " + data)
except sr.UnknownValueError:
print("Google Speech Recognition could not understand audio")
except sr.RequestError as e:
print("Could not request results from Google Speech Recognition service; {0}".format(e))
return data
# Initialize with empty value to start the conversation.
user_input = ''
context = {}
current_action = ''
# Main input/output loop
while current_action != 'end_conversation':
# Send message to Assistant service.
response = service.message(
workspace_id = workspace_id,
input = {
'text': user_input
},
context = context
)
# Print the output from dialog, if any.
if response['output']['text']:
print(response['output']['text'][0])
speak(response['output']['text'][0])
# Update the stored context with the latest received from the dialog.
context = response['context']
# Check for action flags sent by the dialog.
if 'action' in response['output']:
current_action = response['output']['action']
# User asked what time it is, so we output the local system time.
if current_action == 'display_time':
print('The current time is ' + time.strftime('%I:%M:%S %p') + '.')
speak('The current time is ' + time.strftime('%I:%M:%S %p') + '.')
# If we're not done, prompt for next round of input.
if current_action != 'end_conversation':
user_input = input('>> ')
Примечание: в настоящее время я могу написать речь с клавиатуры, и она работает.Я хочу, чтобы пользовательский ввод исходил из текста, сгенерированного из транскрибируемого звука с использованием Google Text в речь.Мне нужно передать данные из записанного аудио в основную часть моего скрипта на python, где он взаимодействует со службой Watson.
Может кто-нибудь помочь мне разобраться?