Python Pocketsphinx: ключевое слово не распознается из файла .wav - PullRequest
1 голос
/ 26 мая 2020

Я пытаюсь обнаружить ключевое слово 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/

В настоящее время он запускается и работает, но ничего не обнаруживает.

Изменить: Здесь - это аудиофайл, который я использую

1 Ответ

0 голосов
/ 30 мая 2020

Ваш файл имеет неправильный формат:

file client_audio.wav 
client_audio.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, 4 channels 20000 Hz

Вы должны преобразовать его в правильный формат 16 бит моно 16 кГц перед декодированием, иначе он не будет работать.

В случае, если порог small, вы можете попробовать разные пороговые значения, такие как 1e-10, 1e-20, 1e-30, 1e-40, чтобы сбалансировать обнаружение и ложные срабатывания.

...