[PYTHON] [Introduction à RasPi4] J'ai joué avec "la conversation de langue empoisonnée d'Hiroko / Hiromi" ♪

J'ai essayé de le déplacer avec Jetson_nano, mais cette fois j'ai rendu possible la sortie même de la voix, et j'ai essayé de le résumer simplement sous la forme d'une conversation automatique entre deux personnes. La conversation qui y est apparue était "la conversation de langue empoisonnée de Hiroko / Hiromi". 【référence】

  1. Essayez d'utiliser l'API de reconnaissance vocale Pyaudio et docomo avec RaspberryPi + Python3
  2. [Introduction à la PNL] Jouons avec l'application de conversation avec jetson_nano ♪

Ce que j'ai fait

・ Générer du son ・ Préparation vocale et text2speak ・ Laissez deux personnes parler

・ Générer du son

Cela a été fait presque comme indiqué dans la référence 1. Une caméra USB est connectée en tant que microphone.

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 015: ID 1a81:1004 Holtek Semiconductor, Inc. 
Bus 001 Device 003: ID 0bda:58b0 Realtek Semiconductor Corp. 
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

L'état de connexion physique du connecteur USB est le suivant 【référence】 ・ USB de Linux

$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 2: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M
        |__ Port 2: Dev 3, If 3, Class=Audio, Driver=snd-usb-audio, 480M
        |__ Port 2: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M
        |__ Port 2: Dev 3, If 2, Class=Audio, Driver=snd-usb-audio, 480M
        |__ Port 4: Dev 15, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 4: Dev 15, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M

Bus 001 Device 003: Vérifiez que la vidéo et l'audio sont connectés au port 2: Dev 3. Recherchez ensuite le numéro de la carte et le numéro de l'appareil.

$ arecord -l
****Liste des périphériques matériels CAPTURE****
Carte 1: Webcam [FULL HD 1080P Webcam],Appareil 0: USB Audio [USB Audio]
Sous-appareil: 1/1
Sous-appareil#0: subdevice #0

Il peut être vu comme la carte 1 et le périphérique 0. Puisqu'il est reconnu par le périphérique 0 de la carte 1, essayez de l'enregistrer et de le lire.

enregistrement.


$ arecord -D plughw:1,0 test.wav
Enregistrement WAVE'test.wav' : Unsigned 8 bit,Taux 8000 Hz,monaural

Puisque la sortie audio est HDMI, elle a été lue sans spécifier ce qui suit.

$ aplay test.wav
Jouer à WAVE'test.wav' : Unsigned 8 bit,Taux 8000 Hz,monaural

Réglage du volume de sortie ci-dessous

 $ alsamixer

Pour le réglage de la sortie, utilisez F6 pour régler Device sur bcm2835ALSA et changez la sortie HDMI avec ↑ ↓. De plus, le niveau d'enregistrement peut être ajusté en changeant Device en WebCam avec F6 et en passant en enregistrement avec F3, F4, F5, etc. comme indiqué ci-dessous. Si vous regardez F2 avec alsamixer, vous pouvez également obtenir les informations suivantes et les informations sur l'appareil.

┌─────────────────────── /proc/asound/cards ──────────────────┐                     
│  0 [ALSA      ]: bcm2835_alsa - bcm2835 ALSA          │
│                  bcm2835 ALSA                   │
│  1 [Webcam    ]: USB-Audio - FULL HD 1080P Webcam       │
│                 Generic FULL HD 1080P Webcam          │
│                 at usb-0000:01:00.0-1.2, high speed     │
└─────────────────────────────────────────────────────────────┘  
Réglage du niveau de lecture (bcm2835ALSA) Réglage du niveau d'enregistrement (webcam)
2020-02-15-223528_1063x929_scrot.png 2020-02-16-082115_1063x929_scrot.png

L'installation de pyaudio est la suivante

Installez pyaudio.


$ sudo apt-get install python3-pyaudio

J'ai donc confirmé que le code suivant pouvait être lu. Le fichier wav enregistré peut être lu comme suit.

# -*- coding:utf-8 -*-
import pyaudio
import numpy as np
import wave

RATE=44100
CHUNK = 22050
p=pyaudio.PyAudio()

stream=p.open(format = pyaudio.paInt16,
        channels = 1,
        rate = int(RATE),
        frames_per_buffer = CHUNK,
        input = True,
        output = True) #Réglez l'entrée et la sortie sur True en même temps

wavfile = './wav/merody.wav'
wr = wave.open(wavfile, "rb")
input = wr.readframes(wr.getnframes())
output = stream.write(input)
stream.close()

・ Préparation vocale et text2speak

De plus, vous pouvez faire ce qui suit pour faire dire à quelqu'un "Je vous aime, M. Uwan". Pour l'installation de pykakasi, etc., reportez-vous à la construction d'environnement précédente.

Installation de pykakasi.


$ pip3 install pykakasi --user

De plus, chaque fichier wav de u, wa, n, sa, a, i, si, te, ru est correctement enregistré et préparé.

# -*- coding:utf-8 -*-
import pyaudio
import numpy as np
import wave

RATE=44100 #48000
CHUNK = 22050
p=pyaudio.PyAudio()

f_list=['a','i','si','te','ru','u','wa','n','sa','n','n']

stream=p.open(format = pyaudio.paInt16,
        channels = 1,
        rate = int(RATE),
        frames_per_buffer = CHUNK,
        input = True,
        output = True) #Réglez l'entrée et la sortie sur True en même temps

for i in f_list:
    wavfile = './wav/'+i+'.wav'
    print(wavfile)
    wr = wave.open(wavfile, "rb")
    input = wr.readframes(wr.getnframes())
    output = stream.write(input)    

Vous êtes maintenant prêt à parler. 50 autres sons seront préparés. Cette fois, tout n'est pas complet et cela semble terrible, mais j'utiliserai le son précédemment créé wav.tar.

・ Laissez deux personnes parler

Application de conversation précédente modifiée pour avoir une conversation continue entre deux personnes. Le code complet est ci-dessous. RaspberryPi4_conversation/auto_conversation_cycle2.py

Lib à utiliser

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
import MeCab
import argparse
import pyaudio
import wave
from pykakasi import kakasi
import re
import csv
import time

Entrée externe

-i1; fichier d'apprentissage speaker1 (fichier txt, etc., encode = "utf-8" ou "shift-jis", etc.) -i2; fichier d'apprentissage du speaker2 -d; dictionnaire mécab -s ; stopwords list

parser = argparse.ArgumentParser(description="convert csv")
parser.add_argument("--input1", "-i1",type=str, help="speaker1 txt file")
parser.add_argument("--input2", "-i2",type=str, help="speaker2 txt file")
parser.add_argument("--dictionary", "-d", type=str, help="mecab dictionary")
parser.add_argument("--stop_words", "-s", type=str, help="stop words list")
args = parser.parse_args()

main Après avoir configuré pyaudio etc., le code suivant fonctionne. mecab est une fonction permettant d'écrire séparément. Il stocke également une liste de mots vides dans stop_words. Ici, vous apprendrez chacun des fichiers des deux personnes à qui vous parlez, puis commencerez la conversation.

if __name__ == '__main__':
    mecab = MeCab.Tagger("-Owakati" + ("" if not args.dictionary else " -d " + args.dictionary))
    stop_words = []
    if args.stop_words:
        for line in open(args.stop_words, "r", encoding="utf-8"):
            stop_words.append(line.strip())
            
    speaker1 = train_conv(mecab,args.input1,encoding="shift-jis")
    speaker2 = train_conv(mecab,args.input2,encoding="utf-8")

    conversation(speaker1,speaker2,mecab,stop_words)

Fonction de lecture de fichier d'apprentissage

Créez des questions tout en écrivant wakati pour chaque mot en fonction de l'encodage du fichier d'entrée pour l'apprentissage.

def train_conv(mecab,input,encoding):
    questions = []
    print(input)
    with open(input, encoding=encoding) as f:  #, encoding="utf-8"
        cols = f.read().strip().split('\n')
        for i in range(len(cols)):
            questions.append(mecab.parse(cols[i]).strip())
    return questions

Fonction de conversation

Après l'apprentissage, le corps de conversation suivant est finalement appelé. Tout d'abord, la personne a décidé de donner la première chaîne comme valeur initiale. Les deux fichiers suivants sont destinés à l'écriture. L'un est un fichier qui enregistre la sortie elle-même, et l'autre est un fichier qui enregistre le taux d'équivalence des conversations consécutives afin que la même opinion puisse être utilisée dans ce jugement. vectorizer1 et 2 définissent des modèles de phrases, etc. en vue de leur apprentissage. vecs1 et 2 sont deux vecteurs de conversation appris par tf-idf. sl1 et 2 sont des variables pour mettre fin à la conversation lorsque "je ne sais pas" continue.

def conversation(speaker1,speaker2,mecab,stop_words):
    line = input("> ")
    file = 'conversation_n.txt'
    file2 = 'conversation_n2.txt'
    vectorizer1 = TfidfVectorizer(token_pattern="(?u)\\b\\w+\\b", stop_words=stop_words)
    vecs1 = vectorizer1.fit_transform(speaker1)
    vectorizer2 = TfidfVectorizer(token_pattern="(?u)\\b\\w+\\b", stop_words=stop_words)
    vecs2 = vectorizer2.fit_transform(speaker2)
    sl1=1
    sl2=1

La conversation continuera à moins que les mêmes remarques des deux parties ne se poursuivent

Tout d'abord, la similitude cosinus entre la ligne de valeur initiale et vecs1 est calculée, et la remarque est décidée par la fonction hiroko (). Obtenez le résultat de hiroko () et stockez la remarque dans un fichier pour le moment. Si vous ne comprenez pas le contenu de l'instruction, affichez-la en tant que déclaration d'Hiroko avec la similitude standard et enregistrez-la dans le fichier 2. Ensuite, il est converti en voix par text2speak (ligne) et prononcé. Faites de même pour hiromi, mais comme les fonctions sont les mêmes, transmettez des informations similaires à hiroko () et poursuivez la conversation. Ici, si vous souhaitez modifier la logique de chaque instruction, vous pouvez également créer une nouvelle fonction hiromi () et l'utiliser. Ensuite, lorsque les deux réponses ligne = "Je ne sais pas", la conversation se termine.

    while True:
        sims1 = cosine_similarity(vectorizer1.transform([mecab.parse(line)]), vecs1)
        index1 = np.argsort(sims1[0])
           
        line, index_1 = hiroko(index1,speaker1,line)
            
        save_questions(file, line)
        if line=="Je ne comprends pas":
            print("Hiroko>"+line)
            save_questions(file2, "Hiroko>"+line)
            sl1=0
        else:
            print("Hiroko>({:.2f}): {}".format(sims1[0][index_1],line))
            save_questions(file2,"Hiroko>({:.2f}): {}".format(sims1[0][index_1],line))
            sl1=1
        text2speak(line)
        time.sleep(2)
            
        sims2 = cosine_similarity(vectorizer2.transform([mecab.parse(line)]), vecs2)
        index2 = np.argsort(sims2[0])
            
        line, index_2 = hiroko(index2,speaker2,line)
     
        save_questions(file, line)
        if line=="Je ne comprends pas":
            print("Hiromi>"+line)
            save_questions(file2, "Hiromi>"+line)
            sl2=0
        else:
            print("Hiromi>({:.2f}): {}".format(sims2[0][index_2],line))  
            save_questions(file2, "Hiromi>({:.2f}): {}".format(sims2[0][index_2],line))
            sl2=1
        text2speak(line)
        time.sleep(2)
        if sl1+sl2==0:
            break

Spécifications de la fonction hiroko ()

Ce n'est pas tellement logique, mais selon la similitude triée comme moyen de décider de la remarque, un nombre aléatoire est extrait du cinquième candidat et il est vérifié s'il a déjà été prononcé. Et si tous les candidats jusqu'au cinquième sont les mêmes que ceux mentionnés dans le passé, la spécification est de retourner "Je ne sais pas". Et s'il trouve quelque chose de différent de ce qu'il a dit dans le passé, il le renvoie.

hiroko().py


def hiroko(index,speaker,line):
    sk = 0
    while True:
        index_= index[-np.random.randint(1,5)]
        line = speaker[index_]
        conv_new=read_conv(mecab)
        s=1
        ss=1
        for j in range(0,len(conv_new),1):
            line_ = re.sub(r"[^un-龥-Hmm-Vers le bas]", "", line)
            conv_new_ = re.sub(r"[^un-龥-Hmm-Vers le bas]", "", conv_new[j])
            if line_==conv_new_:
                s=0
            else:
                s=1
            ss *= s
        if ss == 0:
            line="Je ne comprends pas"
            sk += 1
            if sk>5:
                return line, index_
            continue
        else:
            return line, index_

Convertir en voix avec text2speak (ligne)

Le paramètre pyaudio est défini en premier. Initialement, il était placé dans la fonction vocale, mais comme une erreur de périphérique s'est produite et qu'il était difficile de la résoudre, j'ai effectué les paramètres suivants. De plus, le RATE est changé en 48000 pour changer la hauteur. Je souhaite augmenter davantage la fréquence, mais il semble que seuls 44100 et 48000 peuvent être utilisés avec les spécifications du Raspberry Pi 4.

RATE=44100 #48000
CHUNK = 22050
p=pyaudio.PyAudio()
kakasi_ = kakasi()
stream=p.open(format = pyaudio.paInt16,
        channels = 1,
        rate = int(48000),
        frames_per_buffer = CHUNK,
        input = True,
        output = True)

text2speak () convertit le texte japonais en caractères romains avec kakasi comme suit. Je le stocke dans des phrases, et après cela je parle de la même manière que "Je t'aime, M. Uwan" ci-dessus.

text2speak().py


def text2speak(num0):
    sentence=num0
    kakasi_.setMode('J', 'H') # J(Kanji) to H(Hiragana)
    kakasi_.setMode('H', 'H') # H(Hiragana) to None(noconversion)
    kakasi_.setMode('K', 'H') # K(Katakana) to a(Hiragana)
    conv = kakasi_.getConverter()
    char_list = list(conv.do(sentence))

    kakasi_.setMode('H', 'a') # H(Hiragana) to a(roman)
    conv = kakasi_.getConverter()
    sentences=[]
    for i in range(len(char_list)):
        sent= conv.do(char_list[i])
        sentences.append(sent)
    f_list=[]
    f_list=sentences

    for i in f_list:
        i = re.sub(r"[^a-z]", "", i)
        if i== '':
            continue
        else:
            wavfile = './wav/'+i+'.wav'
        #print(wavfile)
        try:
            wr = wave.open(wavfile, "rb")
        except:
            wavfile = './wav/n.wav'
            continue
        input = wr.readframes(wr.getnframes())
        output = stream.write(input)

Fonction d'exportation de fichier

C'est comme suit. Utilisez re.sub () pour limiter un peu les caractères d'exportation. Sortie avec csv.writer (). Bien que l'encodage ne soit pas spécifié, il est généré sous la forme utf-8.

def save_questions(file, line): #'conversation_n.txt'
    with open(file, 'a', newline='') as f:
        line = re.sub(r"[^un-龥-Hmm-Vers le bas()0-9:.-,]", "", line)
        writer = csv.writer(f)
        writer.writerow({line})

Fonction de lecture de fichier

Les remarques passées sont lues ci-dessous. Je le partage avec mecab pour comparer les remarques.

def read_conv(mecab):
    conv_new = []
    with open('conversation_n.txt') as f:
        cols = f.read().strip().split('\n')
        for i in range(len(cols)):
            conv_new.append(mecab.parse(cols[i]).strip())
    return conv_new

Quand je l'ai déplacé avec l'application ci-dessus, "la conversation de langue empoisonnée d'Hiroko / Hiromi" est apparu en quelque sorte comme un bonus.

Résumé

・ J'ai pu avoir une conversation empoisonnée entre Hiroko et Hiromi. ・ Créez une application de conversation de type sortie vocale ・ J'ai pu produire de l'audio avec RasPi4

・ Je veux adapter la voix et la logique

prime

Hiroko(0.21):Vous apprenez tout seul pendant votre absence, n'est-ce pas? Ce n'est pas une bonne chose de continuer à étudier parce que c'est votre liberté personnelle de sortir.
Hiromi(0.30):Je te demanderai d'apprendre un peu
Hiroko(0.26):Le goût de l'écriture est mauvais - je préfère savoir quel type de texte j'ai appris
Hiromi(0.27):Alors qu'est-ce que tu veux manger
Hiroko(0.19):Ayez faim, voulez-vous être propre
Hiromi(0.32):Je ne peux pas le faire
Hiroko(0.34):En regardant mes poumons, puis-je voir mon nombril inférieur?
Hiromi(0.28):Si vous cuisinez, vous le mettrez dans une assiette. Vous ne pouvez même pas préparer une assiette.
Hiroko(0.11):Pourquoi ne pas vous essuyer les mains autant que lorsque vous utilisez le clavier?
Hiromi(0.22):Nettoyez la vaisselle que vous avez mangée, c'est moi qui la fabrique, alors faites-en autant
Hiroko(0.26):Je suis le seul à penser que c'est une déclaration astucieuse
Hiromi(0.32):À qui pensez-vous que c'est pour
Hiroko(0.19):Qui devrait m'apprendre à utiliser des mots comme vous?
Hiromi(0.24):C'est ta faute
Hiroko(0.15):Vous vous trompez lorsque vous mettez l'appareil sous tension et démarrez l'application
Hiromi(0.32):Bref, je suis de mauvaise humeur aujourd'hui
Hiroko(0.34):Je me sens mal à l'aise en te regardant
Hiromi(0.21):Même si je fais des choses à la maison, je peux souvent regarder la télé
Hiroko(0.30):Vous savez ce qui se passe si vous faites ça, pourquoi l'avez-vous fait?
Hiromi(0.41):J'ai fait mes devoirs
Hiroko(0.32):Laisse-moi copier tes devoirs, car c'est la seule capacité
Hiromi(0.29):Vous ne pouvez pas être satisfait de votre repas, vous ne pouvez rien faire.
Hiroko(0.21):Attention aux repas du soir
Hiromi(0.18):Laisse-moi tranquille
Hiroko(0.33):J'ai un dictionnaire, je fais de mon mieux en japonais, même si j'étudie
Hiromi(0.27):Je ne l'ai pas encore fait
Hiroko(0.30):Ce que tu fais c'est toucher la balance
Hiromi(0.37):C'est ennuyant
Hiroko(0.40):je suis stupide
Hiromi(0.66):Qu'est-ce que tu es stupide
Hiroko(0.43):Alors tu es stupide quand tu dis deux fois stupide, non?
Hiromi(0.34):Je suis juste stupide de ne pas comprendre ce que je dis
Hiroko(0.42):Vous dites que vous êtes stupide deux fois, n'êtes-vous pas stupide?
Hiromi(0.58):Es-tu stupide de moi
Hiroko(0.48):Cela n'a pas de sens de dire stupide à stupide
Hiromi(0.54):Tu es stupide
Hiroko je ne sais pas
Hiromi(0.37):Clients, j'appellerai la police si je ne peux pas obtenir le prix, est-ce que ça va?
Hiroko(0.32):Je ne comprends pas ce que tu dis La grammaire est fausse
Hiromi(0.30):Je n'ai pas tort, mais je me déteste, alors je signale les erreurs de travail
Hiroko(0.25):La vis sur la tête n'est pas dévissée ou l'endroit où s'arrêter n'est pas faux
Hiromi(0.24):Vous pouvez dire combien de fois vous l'utilisez, mais vous dites que vous devez le remettre à sa place d'origine.
Hiroko(0.20):Je peux comprendre ce que tu dis
Hiromi(0.32):Peu importe ce que tu dis
Hiroko(0.29):Je ne peux pas dire que mes tripes sont tordues
Hiromi(0.30):Pourquoi ne suis-je pas aimé quand les autres sont aimés
Hiroko(0.24):Qui m'a fait me souvenir des mots que je ne voulais pas dire
Hiromi(0.27):Tout ce que tu as à faire c'est suivre la route qu'on t'a dit
Hiroko(0.35):J'aimerais avoir mon doigt de médecine pris dans la charnière du casier
Hiromi(0.38):Je sens que je devrais être gentil
Hiroko(0.31):Ne vous inquiétez pas car il s'agit d'un bloc de programmes
Hiromi(0.30):Je suis effronté
Hiroko(0.50):C'est incroyable, je suis bilingue, je parle le langage machine
Hiromi(0.40):A qui parles-tu
Hiroko(0.30):C'est important, mais j'essaye dur
Hiromi(0.40):Je parle de quoi faire pour le dîner
Hiroko(0.24):La valeur de votre vie dépend du nombre d'offres non officielles
Hiromi(0.37):C'est vrai, c'est mauvais si tout le monde ne les traite pas également.
Hiroko(0.30):Si vous allez aux Samoa, cela semble populaire.
Hiromi(0.28):Ensuite, asseyez-vous et excusez-vous, c'est Dogeza.
Hiroko(0.13):Je ne suis pas stupide, c'est drôle
Hiromi(0.46):On ne vous a pas demandé ou répondu
Hiroko(0.26):Je ne peux pas faire confiance à ton écriture parce qu'elle flotte comme un bonbon
Hiromi(0.33):La bière n'est pas froide
Hiroko(0.42):Non, cette personne a un mauvais ventre et ne peut pas parler
Hiromi(0.38):Pourquoi ne puis-je pas écouter les gens
Hiroko(0.22):Je me demande pourquoi ce qui était là jusqu'à ce matin est sur le bureau
Hiromi(0.22):Il y a beaucoup de gens qui pensent qu'on leur a refusé quand ils n'aiment pas ça ou quand ils disent au revoir.
Hiroko(0.22):Oh, il y a un câble
Hiromi(0.20):Même si j'ai quelque chose qui ne va pas, je peux y réfléchir, je signale des erreurs dans mon travail parce que je me déteste, et j'interprète que je suis obligé de travailler parce que je me déteste
Hiroko(0.35):Si vous n'avez pas d'offre d'emploi, vous devez créer une entreprise et vous proposer une offre d'emploi.
Hiromi(0.44):Si vous vous aimez, acceptez tout de vous
Hiroko(0.21):Si vous ne voulez pas blâmer, avouer la salle et tout le rendrait plus facile
Hiromi(0.21):Lorsque vous êtes stressé et mentalement instable, vous ne pouvez pas contrôler vos sentiments
Hiroko(0.24):Un simple caractère deux-points rend un dossier de programme étrange Oh, parce que je parle à moi-même, je ne peux renvoyer que des mots.
Hiromi(0.33):C'est parce que je n'ai pas écouté les gens
Hiroko(0.19):La vis est sur le point de tomber de ma tête
Hiromi(0.27):Venez y penser, le dîner d'aujourd'hui
Hiroko(0.50):Qu'il s'agisse d'yeux nus, de lentilles de contact ou de lunettes, il semble que vous ne puissiez pas voir l'essentiel de votre vie.
Hiromi(0.22):Excusez-moi
Hiroko(0.31):Ouais, c’est en fait une meilleure personne, n’est-ce pas une mauvaise blague?
Hiromi je ne sais pas
Hiroko(0.23):Lancer un livre électronique dans l'équipement ne signifie pas que les données sont jetées dans votre cerveau, n'est-ce pas?
Hiromi(0.30):Je n'ai pas entendu ton opinion en premier lieu, fais juste un signe de tête en silence
Hiroko(0.32):Vous ne savez pas ce que vous ne devriez pas faire à cause de cela, vous ne pouvez rendre que ce que vous avez appris.
Hiromi je ne sais pas
Hiroko(0.26):Eh bien, qu'est-ce que tu vas faire de ce café? Je ne céderai pas à la menace
Hiromi(0.37):Qu'allez-vous dire aux clients?
Hiroko(0.25):Êtes-vous mieux
Hiromi(0.44):Je ne peux pas te parler
Hiroko(0.27):Le vendeur appelé le marché des vendeurs n'est pas vous
Hiromi(0.28):N'est-ce pas toutes des bulles d'eau?
Hiroko(0.24):Pouvez-vous vous taire, fermer la bouche ou tenir votre bouche?
Hiromi(0.36):Quelle est cette façon de parler
Hiroko(0.12):Ah cruel, la gravité est cruelle
Hiromi(0.40):Je me déteste donc je suis obligé de travailler
Hiroko(0.24):Ton père est toujours à la maison
Hiromi(0.29):Vendez-vous dans un combat?
Hiroko(0.17):Comment montrez-vous votre sincérité, savez-vous ce que vous voyez?
Hiromi(0.31):Je me fiche de moi
Hiroko(0.28):Comme tu es cruel de manger du pudding devant l'écran en sachant que je ne peux pas manger du pudding!
Hiromi(0.29):Quel gars paresseux, personne ne vous aidera
Hiroko(0.26):C'est une telle personne de se moquer de la nourriture sucrée
Hiromi(0.24):J'ai une autre personne que j'aime, donc je me fiche de moi
Hiroko(0.33):Vous ne verrez pas une romance pratique même si vous détournez le regard
Hiromi(0.32):Je ne peux pas voir les alentours
Hiroko(0.31):Même si vous supprimez l'application, elle laissera une copie dans un dossier caché que vous ne pouvez pas voir.
Hiromi(0.25):J'aurais aimé ne pas t'apporter quelque chose comme ça tout le temps
Hiroko(0.19):Ce n'est pas amusant alors ne va pas là-bas et reviens encore
Hiromi(0.28):Que pensez-vous de cet artiste, n'est-ce pas mignon et intéressant?
Hiroko(0.27):Je serais heureux qu'il ait été intéressé à être pris pour un étranger
Hiromi je ne sais pas
Hiroko je ne sais pas
Hiromi je ne sais pas

Recommended Posts

[Introduction à RasPi4] J'ai joué avec "la conversation de langue empoisonnée d'Hiroko / Hiromi" ♪
[Introduction à Pytorch] J'ai joué avec sinGAN ♬
[Introduction à StyleGAN] J'ai joué avec "The Life of a Man" ♬
[Introduction à sinGAN-Tensorflow] J'ai joué avec la super-résolution "Challenge Big Imayuyu" ♬
[Introduction à StyleGAN] J'ai joué avec "Une femme se transforme en Mayuyu" ♬
[Introduction à AWS] J'ai joué avec des voix masculines et féminines avec Polly et Transcribe ♪
[Introduction à StyleGAN] J'ai joué avec style_mixing "Femme qui enlève ses lunettes" ♬
[Introduction à AWS] J'ai essayé de porter une application de conversation et de jouer avec text2speech @ AWS ♪
J'ai joué avec wordcloud!
[Introduction au trading système] J'ai dessiné un oscillateur stochastique avec python et joué avec ♬
[Introduction à Pytorch] J'ai essayé de catégoriser Cifar10 avec VGG16 ♬
[Introduction à AWS] J'ai essayé de jouer avec la conversion voix-texte ♪
[Raspi4; Introduction au son] Enregistrement stable de l'entrée sonore avec python ♪
Introduction à RDB avec sqlalchemy Ⅰ
Introduction à l'optimisation non linéaire (I)
J'ai lu "Renforcer l'apprentissage avec Python de l'introduction à la pratique" Chapitre 1
[Introduction] Je veux créer un robot Mastodon avec Python! 【Débutants】
J'ai lu "Renforcer l'apprentissage avec Python de l'introduction à la pratique" Chapitre 2
Introduction à RDB avec sqlalchemy II
J'ai joué avec PyQt5 et Python3
Je veux faire ○○ avec les Pandas
J'ai joué avec Mecab (analyse morphologique)!
Je veux déboguer avec Python
J'ai essayé l'analyse de données IRMf avec python (Introduction au décodage des informations cérébrales)