2015-11-04 3 views
0

Я пытаюсь использовать speech_recognition 3.1.2 с использованием Python 3.4, но у меня все время возникают проблемы.Python Speech_Recognition Плохие результаты

Первоначально при попытке использовать только пример WAV распознаватель я получаю TypeError: «ул» не поддерживает интерфейс буфера, так что я прочешу источник и сделал следующие изменения:

def read(self, size = -1): 
     buffer = self.wav_reader.readframes(self.wav_reader.getnframes() if size == -1 else size) 
     if type(buffer) is str: 
      buffer = buffer.encode(encoding="utf-8", errors="strict") 
      print(buffer) 
     if self.wav_reader.getnchannels() != 1: # stereo audio 
      try: 
       buffer = audioop.tomono(buffer, self.wav_reader.getsampwidth(), 1, 1) # convert stereo audio data to mono 
      except Exception as e: 
       print(e) 
     return buffer 

от:

def read(self, size = -1): 
     buffer = self.wav_reader.readframes(self.wav_reader.getnframes() if size == -1 else size) 
     if self.wav_reader.getnchannels() != 1: # stereo audio 
      buffer = audioop.tomono(buffer, self.wav_reader.getsampwidth(), 1, 1) # convert stereo audio data to mono 
     return buffer 

Хотя это не ошибка, качество транскрипции ужасно. Я могу с высокой точностью запустить python -m speech_recognition, поэтому я не уверен, что происходит. Я поднял энергетический порог до 4000, чтобы убедиться, что это не проблема окружающего шума. Я даже использовал 2 различных службы распознавания (IBM и Google Recognition). Кроме того, по какой-то причине последние 2 буферы пустые строки, которые я тогда преобразовать байт объекты

b'' 
b'' 

Любой совет будет удивительным!

+0

там могут быть массивные различия между питона 2 и 3 с точки зрения того, как обрабатываются строки, вы можете посмотреть на: http://python3porting.com/ problems.html. Поэтому не уверен, что изменение супер тривиально. – toine

+0

@toine Это то, что я изначально думал, но похоже, что они все пишут в Python 3, который был странным, учитывая ошибки, которые у меня есть. –

ответ

1

Я вытолкнул v3.1.3, что должно решить проблему. Обновите с помощью pip install --upgrade SpeechRecognition и попробуйте исправить!

Были фактически два фактора здесь:

  • Существует ошибка в chunk библиотеки Python, где он возвращает строку, а не пустые байты объекта, если указатель файла находится в или после конца файла , Это было исправлено несколько месяцев назад, но большинство используемых сегодня версий Python по-прежнему имеют эту ошибку.
  • Стереозвук не был преобразован должным образом в монофонический - каналы по-прежнему устанавливались как стерео. Это привело к некоторому интересному звучанию!

Смотрите изменения здесь: https://github.com/Uberi/speech_recognition

Смежные вопросы