Отображать значение в HTML точно так же, как значение отображается в командной строке при выполнении print() в python

#python #python-3.x #django #django-views #speech-recognition

#python #python-3.x #django #django-просмотры #распознавание речи

Вопрос:

Я работаю над распознаванием речи, следуя этому руководству и реализуя в Django. Мне интересно, как мы выполняем print("Listening...") , и print("Recognizing...") чтобы пользователь понимал, когда говорить в командной строке, возможно ли отправлять значение (прослушивание, распознавание) на HTML-странице каждый раз, когда пользователь что-то говорит?

 def takeCommand(): 
    r = sr.Recognizer() 
    with sr.Microphone() as source:  
        print("Listening...") 
        r.pause_threshold = 1
        r.adjust_for_ambient_noise(source)
        audio = r.listen(source)
        print(audio)
    try: 
        print("Recognizing...")     
        query = r.recognize_google(audio, language ='en-in') 
        print("User said:",query) 
    except Exception as e: 
        print(e)     
        print("Unable to Recognizing your voice.")
        return "None"
    return query

  

Ответ №1:

Вы можете использовать django.contrib.messages для «печати» их в шаблоне.

На ваш взгляд:

 from django.contrib import messages

messages.warning(self.request, f'Unable to Recognizing your voice')
  

В вашем шаблоне:

     {% if messages %}
        {% for message in messages %}
            <div class="alert alert-{{ message.tags }}">{{ message }}</div>
        {% endfor %}
    {% endif %}
  

Для получения дополнительной информации о платформе messages см.: docs

Комментарии:

1. Спасибо, но NameError : 'self' is not defined. вот какую ошибку я получаю. Я реализовал messages.warning(self.request, f'Unable to Recognizing your voice') функцию takeCommand(). Если я предоставляю request параметр в takeCommand(), то это создает проблему, когда я использую эту функцию. Пожалуйста, дайте мне знать, в чем дело.

2. Я думаю, вы можете просто изменить «self.request» на «request», а также добавить запрос к вашей функции: «def takeCommand (запрос):»

Ответ №2:

как вы отправляете аудио на сервер? каким-то образом через ajax?
Когда он нажимает кнопку, чтобы начать говорить, вы используете JS / jquery, чтобы поместить куда-нибудь:
$('#some_div').append('Listening...');
Когда он перестает говорить, вы помещаете туда:
$('#some_div').append('Recognizing...'); И вы отправляете аудио через ajax на сервер.
Затем вы отвечаете с сервера на запрос ajax и выполняете либо:
$('#some_div').append('Unable to Recognizing your voice.');
или:
$('#some_div').append('User said: ' response.query);