def creationBanque():
    #permet d'attribuer une frequence à un son
    print('Bonjour,je vais apprendre à mieux vous connaître')
    retardateur(2.0)
    nom = input('entrez votre pseudo: ')
    print('Merci, nous allons pouvoir démarrer')
    banque = []
    listePhoneme = []
    a = 1  #pipotage de boucle
    while a == 1:
        phoneme = input(
            'entrez le son à enregistrer. Si vous avez terminé, tapez stop : ')
        if phoneme == 'stop':
            a = 0  #on quitte la boucle
            print('La banque de sons est terminée, à bientôt!')
        else:
            listePhoneme.append(phoneme)
            instructions(phoneme)
            sig = []
            for k in range(10):
                sig.append(enregistrement(phoneme + nom + str(k), 1.5))
                retardateur(0.5)
            banque.append(sig)
            print('le son ' + phoneme + ' a bien été enregistré')
    return listePhoneme, banque
def reconnaissance():
    #permet la reconnaissance d'un phonème
    nom = input('Entrez votre pseudo: ')
    if nom == 'etienne':
        banque = banque_etienne
    elif nom == 'jb':
        banque = banque_jb
    else:
        print('cest votre première utilsation, il va falloir vous enregistrer')
        banque = creationBanque()
    print('données en traitement..."')
    donnee = traitement_banque(banque)
    print('La reconnaissance vocale va pouvoir démarrer')
    while True:
        arret = input(
            'si vous voulez arrêter, tapez stop, sinon tapez entrée : ')
        if arret == 'stop':
            return ("merci d'avoir utilisé notre service")
        son = enregistrement('echantillon', 1.5)
        frmax1 = frequence_max1(son)
        frmax2 = frequence_max2(son)
        listePhoneme = banque[0]
        n = len(listePhoneme)
        identification = False
        for i in range(n):
            d = donnee[i]
            if (d[0] < frmax1 < d[1]
                    and d[2] < frmax2 < d[3]) or (d[0] < frmax2 < d[1]
                                                  and d[2] < frmax1 < d[3]):
                print('vous avez pronnoncé le son : ', listePhoneme[i])
                identification = True
        if identification == False:
            print('signal non identifié')
        print(frmax1, frmax2)
def reconnaissanceArduino():
    #reconnait un son, le clou du programme, la cerise sur le gateau, la creme de la creme et envoie l'instruction a l'arduino, sous forme d'une lettre(chaine de caractere)
    nom = input('Entrez votre pseudo: ')
    if nom == 'etienne':
        banque = banque_etienne
        print('bonjour etienne')
    elif nom == 'jb':
        banque = banque_jb
        print('bonjour jb')
    else:
        print('cest votre première utilsation, il va falloir vous enregistrer')
        banque = creationBanque()
    print('données en traitement...')
    donnee = traitement_banque(banque[1])
    print('La reconnaissance vocale va pouvoir démarrer')
    retardateur(2)
    while True:
        arret = input(
            'si vous voulez arrêter, tapez stop, sinon tapez entrée : ')
        if arret == 'stop':
            instructionArduino('s')
            return ("merci d'avoir utilisé notre service")
        son = enregistrement('echantillon', 1.5)
        frmax1 = frequence_max1(son)
        frmax2 = frequence_max2(son)
        listePhoneme = banque[0]
        n = len(listePhoneme)
        identification = False
        for i in range(n):
            d = donnee[i]
            if (d[0] < frmax1 < d[1]
                    and d[2] < frmax2 < d[3]) or (d[0] < frmax2 < d[1]
                                                  and d[2] < frmax1 < d[3]):
                print('vous avez pronnoncé le son : ', listePhoneme[i])
                instructionArduino(listePhoneme[i])
                identification = True
        if identification == False:
            print('signal non identifié')
        print('maxs indicatifs : ', frmax1, frmax2)  # à titre indicatif
        retardateur(2)
def tracetps_direct(signal, duree_enregistrement):
    #enrgistre la signal et le trace
    return (trace(enregistrement(signal, duree_enregistrement)))