我目前正在使用 Python 的语音识别库和 Google 的语音转文本功能。我担心的是在音频处理过程中没有检测到语音的情况。尽管没有语音,但我知道音频数据仍然会发送到谷歌进行分析。我正在制作像 Alexa 和 google home 这样的语音助手,需要听到“嘿谷歌”等词。
我的问题是:即使音频输入中没有检测到语音,Google Speech-to-Text 是否也会消耗互联网数据?我想确保不会因无声音频输入而导致不必要的互联网使用。 如何解决这个问题,能否本地识别无声音频。对于此事的任何见解或澄清将不胜感激。谢谢!
假设您的代码如下所示:
import speech_recognition as sr
# obtain audio from the microphone
r = sr.Recognizer()
with sr.Microphone() as source:
print("Say something!")
audio = r.listen(source)
print("Google Speech Recognition thinks you said " + r.recognize_google(audio, key="GOOGLE_SPEECH_RECOGNITION_API_KEY"))
在这种情况下,无声片段不会发送到 google API,因为
Recognizer.listen
会在录制之前等待音频达到特定音量。该值可以在初始化Recognizer
时配置。来自文档:
def listen(self, source, timeout=None, phrase_time_limit=None, snowboy_configuration=None)
记录来自
的单个短语 (一个source
实例)到一个AudioSource
实例,它 返回。 这是通过等待音频的能量高于AudioData
(用户已开始 说话),然后录音,直到遇到recognizer_instance.energy_threshold
几秒钟不说话或 没有更多的音频输入。不包括结尾的沉默。recognizer_instance.pause_threshold
参数是此操作的最大秒数 会等待一个短语开始,然后放弃并抛出一个timeout
例外。如果speech_recognition.WaitTimeoutError
是timeout
,不会有等待超时。None
参数是最大秒数 这将允许短语在停止之前继续并且 返回在时间限制之前处理的短语部分 到达。生成的音频将是当时被切断的短语 限制。如果phrase_time_limit
是phrase_timeout
,则不会有乐句时间 限制。None