Python Pocketsphinx:无法从 .wav 文件中识别关键字
Python Pocketsphinx: Keyword not being recognised from a .wav file
我正在尝试从我只说相位温度的录音中检测关键字 temperature
(没有其他词存在)。最初我使用关键字 hello
并且它工作正常但是每当我尝试使用任何其他词时它都没有。我现在的代码如下:
import pocketsphinx as ps
import requests
import json
import sys, os
model_path = ps.get_model_path()
data_path = ps.get_data_path()
# Call to API
def get_temperature():
headers = {
'accept': 'application/json',
'x-api-key': 'REMOVED'
}
response = requests.get(url=TEMPERATURE_URL, headers=headers)
print("Response Code: ", response)
temperature_data = response.json()
print(temperature_data)
temp = temperature_data[0]["value"]
return temp
print("start")
while True:
speech = ps.AudioFile(lm=False, kws='keyphrase.list', kws_threshold=1e-1)
for phrase in speech:
print("--------------------------------------------------------------")
print(phrase.segments(detailed=True))
print(phrase)
if phrase.__eq__('temperature '):
print("if equal")
temperature = get_temperature()
print("Temperature: ", temperature)
我的 keyphrase.list 文件的内容是:
temperature /1e-1/
它当前启动并运行但未检测到任何内容。
编辑:Here 是我正在使用的音频文件
您的文件格式错误:
file client_audio.wav
client_audio.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, 4 channels 20000 Hz
你必须在解码之前将它转换成正确的格式 16 位单声道 16khz,否则它不会工作。
如果阈值较小,您可以尝试使用不同的阈值,例如 1e-10、1e-20、1e-30、1e-40 来平衡检测和误报。
我正在尝试从我只说相位温度的录音中检测关键字 temperature
(没有其他词存在)。最初我使用关键字 hello
并且它工作正常但是每当我尝试使用任何其他词时它都没有。我现在的代码如下:
import pocketsphinx as ps
import requests
import json
import sys, os
model_path = ps.get_model_path()
data_path = ps.get_data_path()
# Call to API
def get_temperature():
headers = {
'accept': 'application/json',
'x-api-key': 'REMOVED'
}
response = requests.get(url=TEMPERATURE_URL, headers=headers)
print("Response Code: ", response)
temperature_data = response.json()
print(temperature_data)
temp = temperature_data[0]["value"]
return temp
print("start")
while True:
speech = ps.AudioFile(lm=False, kws='keyphrase.list', kws_threshold=1e-1)
for phrase in speech:
print("--------------------------------------------------------------")
print(phrase.segments(detailed=True))
print(phrase)
if phrase.__eq__('temperature '):
print("if equal")
temperature = get_temperature()
print("Temperature: ", temperature)
我的 keyphrase.list 文件的内容是:
temperature /1e-1/
它当前启动并运行但未检测到任何内容。
编辑:Here 是我正在使用的音频文件
您的文件格式错误:
file client_audio.wav
client_audio.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, 4 channels 20000 Hz
你必须在解码之前将它转换成正确的格式 16 位单声道 16khz,否则它不会工作。
如果阈值较小,您可以尝试使用不同的阈值,例如 1e-10、1e-20、1e-30、1e-40 来平衡检测和误报。