如何使用python中的recogn_sphinx API提高语音到文本转换的准确性

时间:2018-03-15 10:40:28

标签: python speech-recognition speech-to-text cmusphinx google-speech-api

您可以使用python中的recognize_sphinx API帮助我们提高语音到文本转换的准确性吗?

请找到以下代码,这需要提高准确性基础!

import speech_recognition as sr    
#obtain path to "english.wav" in the same folder as this script
from os import path
AUDIO_FILE = path.join(path.dirname(path.realpath(file)), "english.wav")
AUDIO_FILE = path.join(path.dirname(path.realpath(file)), "french.aiff")
AUDIO_FILE = path.join(path.dirname(path.realpath(file)), "chinese.flac")
#use the audio file as the audio source
r = sr.Recognizer()
with sr.AudioFile(AUDIO_FILE) as source:
audio = r.record(source) # read the entire audio file
#recognize speech using Sphinx
try:
print("Sphinx thinks you said " + r.recognize_sphinx(audio))
except sr.UnknownValueError:
print("Sphinx could not understand audio")
except sr.RequestError as e:
print("Sphinx error; {0}".format(e))

提前致谢!

1 个答案:

答案 0 :(得分:0)

我从事智能个人助理已有一段时间了,偶然发现了您的问题。我会尽力为您提供帮助。

所以,如果我理解正确的话。您难以根据用户(或您的音频文件)所说的内容获得正确的输出?例如。音频/用户会说“嗨!”输出将是“完全不同的东西”,对吧?

查看代码,我注意到您正在使用3种类型的不同音频文件。每个文件都使用不同的语言。当您打开SpeechRecognition的文档时,您会看到有一个Library Reference。在该库参考中,将有notes on using PocketSphinx。首先要突出的是:

  

默认情况下,SpeechRecognition的Sphinx功能仅支持美国英语。其他语言包也可用,但由于文件太大而未提供

我想您已经为此安装了所有必需的软件包。我不会解释这部分,因为这很容易解释。无论如何,文档还说明您可以

  

安装后,您可以简单地使用Recogniser_instance.recognize_sphinx的language参数指定语言。例如,法语将指定为“ fr-FR”,普通话将指定为“ zh-CN”。

不确定上面的代码是您自己的,还是只是从somewhere复制并粘贴。无论如何,您的代码存在一些问题。您一直用另一个文件覆盖AUDIO_FILE变量。因此,您将获得“ chinese.flac”的路径,而不是“在与此脚本相同的文件夹中获取“ english.wav”的路径”。

现在我想您已经知道“语音到文本的准确性”可能是什么问题。它正在“听”中文,并试图将其输出为英语单词。这很容易说明。

要解决此问题,只需添加语言参数并将其设置为您要指定的语言即可。例如

import speech_recognition as sr

# obtain path to "chinese.flac" in the same folder as this script
from os import path

# AUDIO_FILE = path.join(path.dirname(path.realpath(__file__)), "english.wav")
# AUDIO_FILE = path.join(path.dirname(path.realpath(__file__)), "french.aiff")
AUDIO_FILE = path.join(path.dirname(path.realpath(__file__)), "chinese.flac")

# use the audio file as the audio source
r = sr.Recognizer()
with sr.AudioFile(AUDIO_FILE) as source:
    audio = r.record(source)  # read the entire audio file

# recognize speech using Sphinx
try:
    # Just pass a language parameter
    print("Sphinx thinks you said " + r.recognize_sphinx(audio, language="zh-CN"))
except sr.UnknownValueError:
    print("Sphinx could not understand audio")
except sr.RequestError as e:
    print("Sphinx error; {0}".format(e))

希望这会有所帮助,并为您提供进一步的帮助!