Exemplo n.º 1
0
def getReply(canRaise):
    from techmo_sarmata_pyclient.utils.wave_loader import load_wave
    from techmo_sarmata_pyclient.service.sarmata_settings import SarmataSettings
    from techmo_sarmata_pyclient.service.sarmata_recognize import SarmataRecognizer
    from address_provider import AddressProvider
    import os

    WAVE_OUTPUT_FILENAME = "temp.wav"
    DISTRUST_FACTOR = 0.1

    record(WAVE_OUTPUT_FILENAME, True)

    #analyze
    #if __name__ == '__main__':
    ap = AddressProvider()
    if canRaise == True:
        grammar_file = "grammars/grammar_canraise.abnf"
    else:
        grammar_file = "grammars/grammar_cannotraise.abnf"
    address = ap.get("sarmata")

    audio = load_wave(WAVE_OUTPUT_FILENAME)

    settings = SarmataSettings()
    session_id = os.path.basename(WAVE_OUTPUT_FILENAME)
    settings.set_session_id(session_id)
    settings.load_grammar(grammar_file)

    recognizer = SarmataRecognizer(address)
    results = recognizer.recognize(audio, settings)
    player_answer_list = get_results(results)

    length = len(player_answer_list[1])
    if length == 0:
        return 'NO COMMAND DETECTED'
    sortedAnswerList = sorted(player_answer_list[1],
                              key=takeSecond,
                              reverse=True)
    #print(sortedAnswerList)
    if sortedAnswerList[0][1] < 2 * DISTRUST_FACTOR:
        return 'NO COMMAND DETECTED'
    if length >= 2:
        if sortedAnswerList[0][1] - DISTRUST_FACTOR < sortedAnswerList[1][1]:
            return 'NO COMMAND DETECTED'
        if canRaise == True:
            words = sortedAnswerList[0][2].split()
            if words[0] == 'Stawiam':
                sum = 0
                for i in range(len(words)):
                    if i > 0:
                        sum = sum + int(words[i])
                return 'Stawiam ' + str(sum)
    return sortedAnswerList[0][2]
Exemplo n.º 2
0
def recognize_numbers(wave_file):
    ap = AddressProvider()
    grammar_file = "grammars/cyfry.abnf"
    address = ap.get("sarmata")

    audio = load_wave(wave_file)

    settings = SarmataSettings()
    session_id = os.path.basename(wave_file)
    settings.set_session_id(session_id)
    settings.load_grammar(grammar_file)

    recognizer = SarmataRecognizer(address)
    results = recognizer.recognize(audio, settings)
    #print_results(results)
    pass_words = glue_numbers(results)

    return pass_words