Я працюю над веб-додатком для розпізнавання мовлення. Я використовую recorderJS для захоплення звуку та надсилання його до серверної бази, де він повинен бути оброблений за допомогою CMU Sphinx. У мене були проблеми з точністю під час виявлення бібліотеки з останньою версією 5prealpha за допомогою акустичної моделі за замовчуванням, моделі langage та словника, а згодом зменшення кількості розпізнаних слів за допомогою граматики JSGF, тому я використав версію 1.0 beta6. Розпізнавання мікрофона з версія 1.0 beta6 досить точна, однак, коли я переписую звук, він завжди поганий. Мені цікаво, як підвищити точність. Я спробував використати StreamSpeechRecognizer з останньою версією, але це також дає погані результати.
Відповіді:
1 для відповіді № 1Мені вдалося отримати хорошу точність. Я перевірив реалізацію класу edu.cmu.sphinx.frontend.util.Microphone і виявив, що частота дискретизації дорівнює 16000, швидкість передачі даних 16 і кількість каналів дорівнює 1. Я заглянув далі в рекордер JS і я з'ясував, що в Google chrome частота дискретизації становила 44100, тому я шукав налаштовану версію бібліотеки, і я знайшов форк Кріса Рудміна від Matt Diamond's RecorderJS. Я не використовував останню версію, оскільки звук експортується в ogg і Мені потрібно, щоб це було wav, тому я дивився у попередніх випусках; Я використовував версію 0.3, де швидкість передачі даних можна налаштувати, і вона працювала нормально. Пізніше я змінив приклад, що поставляється з ним, і наступні параметри дали хорошу точність:
коефіцієнт посилення монітора: 0
bitDepth: 16
кількість каналів: 1
recordOpus: не позначено
частота дискретизації: 16000
бітрейт: 32000
Це конфігурація джерела потокових даних у файлі xml конфігурації cmu sphinx ".
type="edu.cmu.sphinx.frontend.util.StreamDataSource">
<property name="sampleRate" value="16000" />
<property name="bitsPerSample" value="16" />
<property name="bigEndianData" value="false" />
<property name="signedData" value="true" />
</component>