Une histoire où une personne locale tenant un chaton parlait en anglais lors d'un voyage à l'étranger.
Etranger "Comment dire" cuisine "en japonais?" Je "(?? Pourquoi entendez-vous soudainement ça ...) DAIDOKORO" Étranger "?? ...? Quoi?" Moi-même "DAIDOKORO!" Étranger "... Oh, DAIDOKORO! OK! DAIDOKORO!"
À une date ultérieure
J'ai dit: "Il y avait quelque chose comme ça. Je me demande pourquoi j'ai entendu ça." Mon ami "C'était un chaton au lieu de la cuisine, n'est-ce pas? Vous aviez un chaton, non? " J'ai dit: "Oh, chaton! C'est un chaton! J'ai fait une erreur car la prononciation est similaire à celle de la cuisine! hahaha "
Mon amie "..."
Je "Étudions l'anglais ..."
Afficher deux mots avec une prononciation similaire à l'écran, Lisez l'un ou l'autre des fichiers audio au hasard. Sélectionnez le mot que l'utilisateur estime avoir été prononcé, Affichez la réponse correcte ou incorrecte à l'écran.
En outre, diverses paires de mots avec des symboles de prononciation similaires Recueillir par symbole de prononciation et distinguer quel symbole de prononciation Défiez ou permettez à l'utilisateur de choisir.
Par exemple, la différence entre «r» et «l» qui inquiète de nombreuses personnes, y compris moi-même Supposons que vous vouliez apprendre.
Lorsque vous démarrez le jeu, par exemple, soit la voix claire soit la voix droite Joué au hasard et sélectionnez celui que vous pensez avoir été joué.
Ensuite, la réponse correcte ou la réponse incorrecte s'affiche.
À propos, comme indiqué ci-dessous, les mots light et right sont les premiers Ils sont exactement les mêmes sauf que les symboles phonétiques sont l et r.
mot | Symbole de prononciation |
---|---|
light | lάɪt |
right | rάɪt |
Téléchargez également le fichier audio des mots anglais utilisés dans cet outil depuis weblio. Cependant, il est très difficile de télécharger un par un de nombreux fichiers de mots anglais. Ça prend.
Par conséquent, j'ai créé un outil pour télécharger automatiquement des mots anglais par web scraping. ↓ https://qiita.com/Fuminori_Souma/private/60ce627e66209763d4f2
Avec cet outil, vous pouvez facilement télécharger le fichier audio de votre choix. Cependant, le fichier audio du mot décrit dans le fichier json de cet outil est publié sur Google Drive (décrit plus loin).
L'écran immédiatement après l'exécution ressemble à ceci.
Aujourd'hui, je vais essayer de faire la distinction entre «et», pour lesquels les Japonais ne sont pas doués.
Lorsque vous appuyez sur le bouton "Démarrer le jeu", l'écran passe à l'écran de jeu. Y a-t-il un total de 14 questions?
Lorsque j'ai appuyé sur le bouton "Play Audio", le fichier audio a été lu et deux options sont apparues. Je me demande lequel a été prononcé. .. Appuyez sur le bouton "Play Again" et écoutez à nouveau. D'accord, le temps à gauche! Cliquez sur le texte "tendu" pour répondre.
Excellente réponse! Tu l'as fait. Cliquez sur "tendu" et "dixième" pour jouer et chacun Vérifions la différence audio. Lorsque vous avez terminé, appuyez sur le bouton "Démarrer le problème suivant".
Cette fois "souris" et "bouche"? D'accord, bouche!
... n'est-ce pas? bon sang!
... tout est fini. 7 réponses correctes sur 14? Eh bien, c'est bon (transpiration) Appuyez sur le bouton "Retour au titre".
Ensuite, essayons de faire la distinction entre «b» et «v».
Je l'utilise comme ça.
English_study.py
import sys
import tkinter
from tkinter import messagebox
from mutagen.mp3 import MP3 as mp3
from tkinter import *
import pygame
import time
import json
import random
from PIL import Image, ImageTk
def ques_start_next(event): #Commencer le problème/Écouter à nouveau l'audio/Commencer le problème suivant
if bttn_repnxt['text'] == 'Lire l'audio':
global word1
global word2
global rep_word #Mots réellement prononcés
global id
text_res["text"] = '' #Réinitialiser la réponse à la question précédente
group = ps
words = random.choice(list(wordlist['Wordlist'][group]))
id = 'id' + str(quorder[qunum - renum])
word1 = (wordlist['Wordlist'][group][id]['word1'])
word2 = (wordlist['Wordlist'][group][id]['word2'])
rep_word = wordlist['Wordlist'][group][id][random.choice(list(wordlist['Wordlist'][group][words]))]
rep_mp3(rep_word) #Lire le fichier audio
#Changer l'état de l'objet
text_w1["text"] = word1
text_w2["text"] = word2
text_ques1["text"] = 'Ce qui a été prononcé ...'
text_ques2["text"] = 'Laquelle?'
bttn_repnxt['text'] = 'Rejouer'
text_adc.place_forget()
elif bttn_repnxt['text'] == 'Rejouer':
rep_mp3(rep_word) #Lire le fichier audio
else: # 'Commencer le problème suivant'
#Changer l'état de l'objet
bttn_repnxt['text'] = 'Lire l'audio'
text_res.place_forget()
#Lancer le problème suivant (lire le fichier audio)
ques_start_next(event)
def rep_mp3(tgt_word): #Lire l'audio
filename = 'C:/Users/fumin/OneDrive/bureau/English_words/' + tgt_word + '.mp3' #Le fichier mp3 que vous souhaitez lire
pygame.mixer.init()
pygame.mixer.music.load(filename) #Charger la source sonore
mp3_length = mp3(filename).info.length #Obtenez la longueur de la source sonore
pygame.mixer.music.play(1) #La lecture démarre. Jouez n fois si la partie 1 est modifiée(Dans ce cas, xn également le nombre de secondes sur la ligne suivante.)
time.sleep(mp3_length + 0.25) #Après avoir démarré la lecture, attendez la durée de la source sonore(0.Attendre 25 est l'élimination des erreurs)
pygame.mixer.music.stop() #La lecture s'arrête après avoir attendu la durée de la source sonore
def enlarge_word(event): #Mot plus grand avec le pointeur de la souris
if str(event.widget["text"]) == word1:
text_w1["font"] = ("", 12) #Caractères plus grands
text_w1["cursor"] = "hand2" #Changer le pointeur de la souris en type d'index
else:
text_w2["font"] = ("", 12) #Caractères plus grands
text_w2["cursor"] = "hand2" #Changer le pointeur de la souris en type d'index
def undo_word(event): #Restaure les mots qui sont hors du pointeur de la souris à leur taille d'origine
if str(event.widget["text"]) == word1:
text_w1["font"] = ("", 10) #Afficher les caractères en première taille
else:
text_w2["font"] = ("", 10) #Afficher les caractères en première taille
def choose_word(event): #Déterminer si le mot sélectionné par l'utilisateur est correct
global oknum
global renum
if bttn_repnxt['text'] == 'Rejouer':
#Afficher les bonnes réponses et notes
text_res.place(x=175, y=130)
text_adc.place(x=130, y=160)
if str(event.widget["text"]) == word1: #Si vous sélectionnez le mot à gauche
if rep_word == word1:
text_res["text"] = 'Bonne réponse!!'
else:
text_res["text"] = 'Réponse incorrecte…'
else: #Si vous sélectionnez le mot à droite
if rep_word == word2:
text_res["text"] = 'Bonne réponse!!'
else:
text_res["text"] = 'Réponse incorrecte…'
if text_res["text"] == 'Bonne réponse!!':
oknum = oknum + 1 #Ajouter le nombre de bonnes réponses
text_res["foreground"] = 'blue'
else:
text_res["foreground"] = 'red'
renum -= 1 #Soustrayez le nombre de questions restantes
#Changer l'état de l'objet
text_scr['text'] = 'But:' + str(oknum) + '/' + str(qunum)
text_rest['text'] = 'restant:' + str(renum)
text_ques1["text"] = ''
text_ques2["text"] = ''
bttn_repnxt["text"] = 'Commencer le problème suivant'
if renum == 0: #Quand tous les problèmes sont terminés
bttn_repnxt.place_forget()
text_end.place(x=110, y=320)
elif bttn_repnxt['text'] == 'Commencer le problème suivant': #Lire l'audio pour le prochain numéro
if str(event.widget["text"]) == word1:
rep_mp3(wordlist['Wordlist'][ps][id]['word1'])
else:
rep_mp3(wordlist['Wordlist'][ps][id]['word2'])
def create_radioboutton(row, column, pdx, num, value): #Générer un bouton radio sur l'écran titre
rdbtn[num] = tkinter.Radiobutton(frame, value=value, command=rb_clicked, variable=var, text=u'')
rdbtn[num].grid(row=row, column=column, padx=0, ipadx=pdx, pady=yinvl)
def create_picture(row='df', column='df', pdx='df', num='df'): #Symboles de prononciation sur l'écran titre(image)Générer un
if row == 'df' and column == 'df'and pdx == 'df'and num == 'df': #Pour l'écran titre
cv[rbnum] = Canvas(width=70, height=20)
cv[rbnum].create_image(1, 1, image=pngfile[rbnum], anchor=NW)
cv[rbnum].place(x=195, y=25)
else: #Dans le cas de l'écran de démarrage du jeu
cv[num] = Canvas(frame, width=70, height=20)
cv[num].create_image(1, 1, image=pngfile[num], anchor=NW)
cv[num].grid(row=row, column=column, ipadx=pdx, pady=yinvl)
def rb_clicked(): #Sélectionnez un symbole de prononciation à étudier
global rbnum
global ps
rbnum = int(var.get()) #Bouton radio sélectionné(=Symbole de prononciation)Stocker le nombre de
ps = list(wordlist['Wordlist'])[rbnum] #Sélectionnez le symbole de prononciation sélectionné
def switch_mode(event): #Commencer le jeu/Revenir à l'écran titre
global qunum #Nombre total de problèmes
global oknum #Nombre de bonnes questions
global renum #Nombre de problèmes restants
global quorder #Ordre des questions de questions
if bttn_swmode['text'] == 'début du jeu':
#Masquer l'objet qui était sur le premier écran
frame.place_forget()
text_title.place_forget()
text_ques3.place_forget()
#Afficher les objets pour le jeu
bttn_repnxt.place(x=155, y=70)
text_scr.place(x=200, y=250)
text_rest.place(x=130, y=250)
text_w1.place(x=128, y=190)
text_w2.place(x=228, y=190)
text_ps.place(x=135, y=28)
text_ques1.place(x=160, y=130)
text_ques2.place(x=175, y=160)
create_picture()
#divers paramètres
oknum = 0
qunum = len(wordlist['Wordlist'][ps])
renum = qunum
text_scr['text'] = 'But:' + str(oknum) + '/' + str(qunum)
text_rest['text'] = 'restant:' + str(renum)
quorder = random.sample(range(1, qunum + 1), k=qunum)
bttn_swmode['text'] = 'Retour au titre'
text_w1["text"] = ''
text_w2["text"] = ''
text_ques1["text"] = ''
text_ques2["text"] = ''
bttn_repnxt['text'] = 'Lire l'audio'
else: #Revenir à l'écran titre
if renum == 0 or (renum != 0 and messagebox.askyesno('Vérification', 'Il y a encore des problèmes. Voulez-vous revenir à l'écran titre?')):
# if messagebox.askyesno('Vérification', 'Il y a encore des problèmes. Voulez-vous revenir à l'écran titre?'):
#Masquer les objets qui étaient sur l'écran de jeu
bttn_repnxt.place_forget()
text_scr.place_forget()
text_rest.place_forget()
text_w1.place_forget()
text_w2.place_forget()
text_ps.place_forget()
text_ques1.place_forget()
text_ques2.place_forget()
text_end.place_forget()
text_res.place_forget()
text_adc.place_forget()
cv[rbnum].place_forget()
#Afficher les objets pour l'écran titre
frame.place(x=90, y=90)
text_title.place(x=110, y=30)
text_ques3.place(x=90, y=65)
bttn_swmode['text'] = 'début du jeu'
#Écran d'affichage
root = tkinter.Tk()
root.title(u"Prononciation")
root.geometry("400x420")
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
# Frame
frame = tkinter.Frame(root)
frame.place(x=90, y=90)
frame.columnconfigure(0, weight=1)
frame.rowconfigure(0, weight=1)
#Paramètres d'étiquette
text_w1 = tkinter.Label(text=u'', font=("", 10))
text_w1.bind("<Enter>", enlarge_word)
text_w1.bind("<Leave>", undo_word)
text_w1.bind("<Button-1>", choose_word)
text_w2 = tkinter.Label(text=u'', font=("", 10))
text_w2.bind("<Enter>", enlarge_word)
text_w2.bind("<Leave>", undo_word)
text_w2.bind("<Button-1>", choose_word)
text_ques1 = tkinter.Label(text=u'')
text_ques2 = tkinter.Label(text=u'')
text_ques3 = tkinter.Label(text=u'Sélectionnez un symbole phonétique et démarrez le jeu.')
text_ques3.place(x=90, y=65)
text_ps = tkinter.Label(text=u'Symbole de prononciation:')
text_adc = tkinter.Label(text=u'* Cliquez sur chaque mot pour jouer la voix')
text_res = tkinter.Label(text=u'')
text_scr = tkinter.Label(text=u'')
text_rest = tkinter.Label(text=u'')
text_title = tkinter.Label(text=u'Prononciation(Temporaire)', font=(u'MS demain matin', 20))
text_title.place(x=110, y=30)
text_end = tkinter.Label(text=u'Le jeu avec ce symbole de prononciation est terminé.')
text_end["foreground"] = 'green'
#Paramètres du bouton poussoir
bttn_repnxt = tkinter.Button(text=u'Lire l'audio', width=11)
bttn_repnxt.bind("<Button-1>", ques_start_next) # (Button-2 pour le clic de roue, 3 pour le clic droit)
bttn_swmode = tkinter.Button(text=u'début du jeu', width=10)
bttn_swmode.bind("<Button-1>", switch_mode) # (Button-2 pour le clic de roue, 3 pour le clic droit)
bttn_swmode.place(x=157, y=380)
#Définition des paramètres utilisés pour le placement des boutons radio
xinvl = 30
yinvl = 0
var = StringVar()
var.set('0') #Réglez le bouton radio sur "non coché"
f = open("C:/Users/fumin/OneDrive/bureau/Wordlist.json", 'r')
wordlist = json.load(f)
oknum = 0
rb_clicked() #Bouton radio sélectionné dans l'état initial
#Initialisation des variables qui stockent les informations d'image et les informations de bouton radio
pngfile = [''] * len(wordlist['Wordlist'])
cv = [''] * len(wordlist['Wordlist'])
rdbtn = [''] * len(wordlist['Wordlist'])
#Boutons radio/Réglage du symbole de prononciation
for i in range(int(len(wordlist['Wordlist'])/2)):
ipadx = 10
pngfile[i*2] = PhotoImage(file="C:/Users/fumin/OneDrive/image/" + list(wordlist['Wordlist'])[i * 2] + ".PNG")
pngfile[i*2+1] = PhotoImage(file="C:/Users/fumin/OneDrive/image/" + list(wordlist['Wordlist'])[i * 2 + 1] + ".PNG")
create_radioboutton(i+1, 1, 0, i*2, i*2)
create_picture(i+1, 2, ipadx, i*2)
create_radioboutton(i+1, 3, 0, i*2+1, i*2+1)
create_picture(i+1, 4, ipadx, i*2+1)
root.mainloop()
Wordlist.json
{
"Wordlist": {
"b_v" : {
"id1" : {
"word1": "boat",
"word2": "vote"
},
"id2" : {
"word1": "bury",
"word2": "vary"
},
"id3" : {
"word1": "base",
"word2": "vase"
},
"id4" : {
"word1": "bent",
"word2": "vent"
},
"id5" : {
"word1": "ban",
"word2": "van"
},
"id6" : {
"word1": "best",
"word2": "vest"
},
"id7" : {
"word1": "bat",
"word2": "vat"
}
},
"l_r" : {
"id1" : {
"word1": "light",
"word2": "right"
},
"id2" : {
"word1": "lice",
"word2": "rice"
},
"id3" : {
"word1": "long",
"word2": "wrong"
},
"id4" : {
"word1": "lock",
"word2": "rock"
},
"id5" : {
"word1": "lane",
"word2": "rain"
},
"id6" : {
"word1": "lend",
"word2": "rend"
},
"id7" : {
"word1": "lead",
"word2": "read"
},
"id8" : {
"word1": "loom",
"word2": "room"
},
"id9" : {
"word1": "lace",
"word2": "race"
},
"id10" : {
"word1": "lack",
"word2": "rack"
},
"id11" : {
"word1": "lake",
"word2": "rake"
},
"id12" : {
"word1": "lamp",
"word2": "ramp"
},
"id13" : {
"word1": "lank",
"word2": "rank"
},
"id14" : {
"word1": "late",
"word2": "rate"
},
"id15" : {
"word1": "law",
"word2": "raw"
},
"id16" : {
"word1": "clown",
"word2": "crown"
},
"id17" : {
"word1": "folk",
"word2": "fork"
},
"id18" : {
"word1": "glamour",
"word2": "grammar"
},
"id19" : {
"word1": "flee",
"word2": "free"
},
"id20" : {
"word1": "allow",
"word2": "arrow"
},
"id21" : {
"word1": "belly",
"word2": "berry"
},
"id22" : {
"word1": "blanch",
"word2": "branch"
},
"id23" : {
"word1": "bland",
"word2": "brand"
},
"id24" : {
"word1": "bravely",
"word2": "bravery"
},
"id25" : {
"word1": "bleach",
"word2": "breach"
},
"id26" : {
"word1": "bleed",
"word2": "breed"
},
"id27" : {
"word1": "blink",
"word2": "brink"
},
"id28" : {
"word1": "bully",
"word2": "burly"
},
"id29" : {
"word1": "collect",
"word2": "correct"
},
"id30" : {
"word1": "flesh",
"word2": "fresh"
}
},
"crt_ash" : {
"id1" : {
"word1": "bug",
"word2": "bag"
},
"id2" : {
"word1": "fun",
"word2": "fam"
},
"id3" : {
"word1": "tusk",
"word2": "task"
},
"id4" : {
"word1": "much",
"word2": "match"
},
"id5" : {
"word1": "buck",
"word2": "back"
},
"id6" : {
"word1": "crush",
"word2": "crash"
},
"id7" : {
"word1": "suck",
"word2": "sack"
},
"id8" : {
"word1": "stuff",
"word2": "staff"
},
"id9" : {
"word1": "mud",
"word2": "mad"
},
"id10" : {
"word1": "musk",
"word2": "mask"
},
"id11" : {
"word1": "lump",
"word2": "lamp"
},
"id12" : {
"word1": "bung",
"word2": "bang"
},
"id13" : {
"word1": "hut",
"word2": "hat"
},
"id14" : {
"word1": "rump",
"word2": "ramp"
},
"id15" : {
"word1": "uncle",
"word2": "ankle"
},
"id16" : {
"word1": "muster",
"word2": "master"
},
"id17" : {
"word1": "bund",
"word2": "band"
},
"id18" : {
"word1": "puppy",
"word2": "pappy"
},
"id19" : {
"word1": "double",
"word2": "dabble"
},
"id20" : {
"word1": "hunk",
"word2": "hank"
},
"id21" : {
"word1": "stunned",
"word2": "stand"
}
},
"ash_alfa" : {
"id1" : {
"word1": "pappy",
"word2": "poppy"
},
"id2" : {
"word1": "adapt",
"word2": "adopt"
},
"id3" : {
"word1": "bag",
"word2": "bog"
},
"id4" : {
"word1": "back",
"word2": "bock"
},
"id5" : {
"word1": "sack",
"word2": "sock"
},
"id6" : {
"word1": "mask",
"word2": "mosque"
},
"id7" : {
"word1": "hat",
"word2": "hot"
},
"id8" : {
"word1": "ramp",
"word2": "romp"
},
"id9" : {
"word1": "band",
"word2": "bond"
},
"id10" : {
"word1": "possible",
"word2": "passable"
},
"id11" : {
"word1": "sad",
"word2": "sod"
},
"id12" : {
"word1": "tap",
"word2": "top"
},
"id13" : {
"word1": "nat",
"word2": "not"
},
"id14" : {
"word1": "hank",
"word2": "honk"
},
"id15" : {
"word1": "bax",
"word2": "box"
},
"id16" : {
"word1": "valley",
"word2": "volley"
},
"id17" : {
"word1": "sax",
"word2": "sox"
}
},
"alfa_crt" : {
"id1" : {
"word1": "body",
"word2": "buddy"
},
"id2" : {
"word1": "wander",
"word2": "wonder"
},
"id3" : {
"word1": "soccer",
"word2": "sucker"
},
"id4" : {
"word1": "poppy",
"word2": "puppy"
},
"id5" : {
"word1": "bond",
"word2": "bund"
},
"id6" : {
"word1": "romp",
"word2": "rump"
},
"id7" : {
"word1": "hot",
"word2": "hut"
},
"id8" : {
"word1": "mosque",
"word2": "musk"
},
"id9" : {
"word1": "sock",
"word2": "suck"
},
"id10" : {
"word1": "bock",
"word2": "buck"
},
"id11" : {
"word1": "bog",
"word2": "bug"
},
"id12" : {
"word1": "collar",
"word2": "color"
},
"id13" : {
"word1": "rob",
"word2": "rub"
},
"id14" : {
"word1": "honk",
"word2": "hunk"
},
"id15" : {
"word1": "calm",
"word2": "come"
},
"id16" : {
"word1": "coddle",
"word2": "cuddle"
}
},
"s_th" : {
"id1" : {
"word1": "sink",
"word2": "think"
},
"id2" : {
"word1": "sick",
"word2": "thick"
},
"id3" : {
"word1": "sing",
"word2": "thing"
},
"id4" : {
"word1": "sought",
"word2": "thought"
},
"id5" : {
"word1": "sank",
"word2": "thank"
},
"id6" : {
"word1": "seam",
"word2": "theme"
},
"id7" : {
"word1": "sin",
"word2": "thin"
},
"id8" : {
"word1": "mouse",
"word2": "mouth"
},
"id9" : {
"word1": "tense",
"word2": "tenth"
},
"id10" : {
"word1": "force",
"word2": "forth"
},
"id11" : {
"word1": "worse",
"word2": "worth"
},
"id12" : {
"word1": "face",
"word2": "faith"
},
"id13" : {
"word1": "boss",
"word2": "both"
},
"id14" : {
"word1": "mass",
"word2": "math"
}
},
"oo-lvc_ou" : {
"id1" : {
"word1": "called",
"word2": "cold"
},
"id2" : {
"word1": "raw",
"word2": "row"
},
"id3" : {
"word1": "law",
"word2": "low"
},
"id4" : {
"word1": "call",
"word2": "coal"
},
"id5" : {
"word1": "hall",
"word2": "hole"
},
"id6" : {
"word1": "tall",
"word2": "toll"
},
"id7" : {
"word1": "bawl",
"word2": "bowl"
},
"id8" : {
"word1": "tall",
"word2": "tole"
},
"id9" : {
"word1": "lawn",
"word2": "loan"
},
"id10" : {
"word1": "pawl",
"word2": "pole"
},
"id11" : {
"word1": "ball",
"word2": "bole"
},
"id12" : {
"word1": "caught",
"word2": "coat"
}
},
"alfa-hschwa_hschwa-lvc" : {
"id1" : {
"word1": "heart",
"word2": "hurt"
},
"id2" : {
"word1": "hard",
"word2": "heard"
},
"id3" : {
"word1": "carve",
"word2": "curve"
},
"id4" : {
"word1": "lark",
"word2": "lurk"
},
"id5" : {
"word1": "bard",
"word2": "bird"
},
"id6" : {
"word1": "far",
"word2": "fur"
},
"id7" : {
"word1": "park",
"word2": "perk"
}
},
"ash_e" : {
"id1" : {
"word1": "adapt",
"word2": "adept"
},
"id2" : {
"word1": "parish",
"word2": "perish"
},
"id3" : {
"word1": "marry",
"word2": "merry"
},
"id4" : {
"word1": "back",
"word2": "beck"
},
"id5" : {
"word1": "band",
"word2": "bend"
},
"id6" : {
"word1": "nat",
"word2": "net"
},
"id7" : {
"word1": "bag",
"word2": "beg"
},
"id8" : {
"word1": "hat",
"word2": "het"
}
},
"ou_oo-hschwa" : {
"id1" : {
"word1": "motor",
"word2": "mortar"
},
"id2" : {
"word1": "load",
"word2": "lord"
},
"id3" : {
"word1": "bode",
"word2": "board"
},
"id4" : {
"word1": "coat",
"word2": "court"
},
"id5" : {
"word1": "boa",
"word2": "bore"
},
"id6" : {
"word1": "hose",
"word2": "hoarse"
},
"id7" : {
"word1": "woe",
"word2": "war"
}
},
"oo-lvc_schwa-u" : {
"id1" : {
"word1": "walk",
"word2": "woke"
},
"id2" : {
"word1": "bought",
"word2": "boat"
},
"id3" : {
"word1": "cost",
"word2": "coast"
},
"id4" : {
"word1": "flaw",
"word2": "flow"
},
"id5" : {
"word1": "hall",
"word2": "whole"
},
"id6" : {
"word1": "nought",
"word2": "note"
}
},
"hschwa_lvc" : {
"id1" : {
"word1": "fort",
"word2": "fought"
},
"id2" : {
"word1": "sort",
"word2": "sought"
},
"id3" : {
"word1": "source",
"word2": "sauce"
},
"id4" : {
"word1": "lorn",
"word2": "lawn"
},
"id5" : {
"word1": "there",
"word2": "their"
},
"id6" : {
"word1": "court",
"word2": "caught"
}
},
"alfau_oo" : {
"id1" : {
"word1": "brown",
"word2": "brawn"
},
"id2" : {
"word1": "drown",
"word2": "drawn"
},
"id3" : {
"word1": "down",
"word2": "dawn"
},
"id4" : {
"word1": "sow",
"word2": "saw"
},
"id5" : {
"word1": "sough",
"word2": "saw"
},
"id6" : {
"word1": "tout",
"word2": "taught"
}
},
"alfa_e" : {
"id1" : {
"word1": "not",
"word2": "net"
},
"id2" : {
"word1": "adopt",
"word2": "adept"
},
"id3" : {
"word1": "bog",
"word2": "beg"
},
"id4" : {
"word1": "hot",
"word2": "het"
},
"id5" : {
"word1": "bock",
"word2": "beck"
},
"id6" : {
"word1": "bond",
"word2": "bend"
}
},
"s_esh" : {
"id1" : {
"word1": "seat",
"word2": "sheet"
},
"id2" : {
"word1": "see",
"word2": "she"
},
"id3" : {
"word1": "seep",
"word2": "sheep"
},
"id4" : {
"word1": "seer",
"word2": "sheer"
},
"id5" : {
"word1": "sip",
"word2": "ship"
}
},
"z_eth" : {
"id1" : {
"word1": "wiz",
"word2": "with"
},
"id2" : {
"word1": "zen",
"word2": "then"
},
"id3" : {
"word1": "breeze",
"word2": "breathe"
},
"id4" : {
"word1": "tease",
"word2": "teethe"
},
"id5" : {
"word1": "closing",
"word2": "clothing"
}
},
"alfa_a" : {
"id1" : {
"word1": "drier",
"word2": "dryer"
},
"id2" : {
"word1": "find",
"word2": "fined"
},
"id3" : {
"word1": "guise",
"word2": "guys"
},
"id4" : {
"word1": "lime",
"word2": "lyme"
}
},
"e_i" : {
"id1" : {
"word1": "wary",
"word2": "weary"
},
"id2" : {
"word1": "emigrant",
"word2": "immigrant"
},
"id3" : {
"word1": "desert",
"word2": "dessert"
},
"id4" : {
"word1": "tear",
"word2": "tier"
}
},
"schwa-u_oo-hschwa" : {
"id1" : {
"word1": "woe",
"word2": "war"
},
"id2" : {
"word1": "foam",
"word2": "form"
},
"id3" : {
"word1": "foe",
"word2": "four"
}
},
"alfa_o" : {
"id1" : {
"word1": "dow",
"word2": "dough"
},
"id2" : {
"word1": "wow",
"word2": "woe"
},
"id3" : {
"word1": "allow",
"word2": "alow"
}
},
"alfa_oo" : {
"id1" : {
"word1": "noun",
"word2": "known"
},
"id2" : {
"word1": "farm",
"word2": "form"
},
"id3" : {
"word1": "what",
"word2": "wat"
}
},
"oo-hschwa_hschwa-lvc" : {
"id1" : {
"word1": "warm",
"word2": "worm"
},
"id2" : {
"word1": "ward",
"word2": "word"
},
"id3" : {
"word1": "torn",
"word2": "turn"
}
},
"other" : {
"id1" : {
"word1": "with",
"word2": "width"
},
"id2" : {
"word1": "breathe",
"word2": "breadth"
},
"id3" : {
"word1": "father",
"word2": "further"
},
"id4" : {
"word1": "borrow",
"word2": "borough"
},
"id5" : {
"word1": "hole",
"word2": "whole"
},
"id6" : {
"word1": "toe",
"word2": "tow"
},
"id7" : {
"word1": "bill",
"word2": "beer"
},
"id8" : {
"word1": "all",
"word2": "oar"
},
"id9" : {
"word1": "shock",
"word2": "shook"
},
"id10" : {
"word1": "crock",
"word2": "crook"
},
"id11" : {
"word1": "aren't",
"word2": "ant"
},
"id12" : {
"word1": "parse",
"word2": "pass"
},
"id13" : {
"word1": "some",
"word2": "sum"
},
"id14" : {
"word1": "discus",
"word2": "discuss"
},
"id15" : {
"word1": "gall",
"word2": "girl"
},
"id16" : {
"word1": "walk",
"word2": "work"
}
}
}
}
Stocké ci-dessous. https://drive.google.com/open?id=1u4l5wo-6SC00Ys0xBZO_am1v2yPjb_NU
En fait, je pense que la gestion est efficace sur Github sans faire cela. .. Depuis que j'étudie, je l'ai stocké temporairement dans Google Drive.
Téléchargez localement le fichier stocké sur le lecteur ci-dessus et modifiez le répertoire décrit dans .py comme indiqué ci-dessous en fonction de l'emplacement local. (C'est gênant)
Endroit pour mettre | Changements de source |
---|---|
Fichier audio (mp3) | Répertoire sur le côté droit de la variable "filename" |
fichier json | Répertoire sur le côté droit de la variable "f" |
Fichier image (png) | Répertoire sur le côté droit de la variable "pngfile" |
Comme mentionné ci-dessus, le fichier json organise des paires de mots pour chaque symbole de prononciation différent. Étant donné que les symboles de prononciation ne peuvent pas être traités même s'ils sont écrits tels quels, ils ont été écrits en anglais comme indiqué ci-dessous.
Symbole de prononciation | Nom | Comment écrire en json ci-dessus |
---|---|---|
æ | Cendre | ash |
ʃ | Esh | esh |
ə | Schwar | schwa |
ɚ | Avec crochet(hooked)Schwar | hschwa |
ɔ | Ouvrir o | oo |
α | alpha | alfa |
ː | Voyelle longue du colon | lvc |
ʌ | Carrett, coin, chapeau | crt |
ð | Eze | eth |
θ | Thêta | th |
Par exemple, dans le cas d'une paire de "ɚ" et "ː", il est décrit comme "hschwa_lvc".
À propos, a, r, v, etc. sont décrits tels quels.
En fait, j'ai créé une application similaire avec C ++ / CLI qui est une extension de C ++ pour .NET, faisant référence au livre suivant au lieu de python.
https://www.amazon.co.jp/%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E4%BD%9C%E3%82%8D%E3%81%86-Visual-%E5%85%A5%E9%96%80-2015%E5%AF%BE%E5%BF%9C/dp/4822298760
Cependant, j'ai eu du mal devant le langage difficile que la spécification de C ++ / CLR était compliquée et manquait d'informations, et bien que j'aie réussi à faire quelque chose de similaire à ce post, c'est devenu une chose difficile à gérer en raison du manque de maintenabilité. Je l'ai refait avec python et l'ai posté dans cet article.
J'étais particulièrement reconnaissant envers ce qui suit. Je vous suis très reconnaissant pour toutes les informations utiles.
Contenu | Lier la destination |
---|---|
Comment lire des fichiers audio | https://qiita.com/kekeho/items/a0b93695d8a8ac6f1028 |
Comment gérer json | https://qiita.com/kikuchiTakuya/items/53990fca06fb9ba1d8a7 |
Comment accéder de manière aléatoire au type de dictionnaire | https://teratail.com/questions/108589 |
Implémentation du traitement lorsque le pointeur de la souris est placé sur le widget | https://tutorialmore.com/questions-716474.htm |
Séquence d'événements | http://www.rouge.gr.jp/~fuku/tips/python-tkinter/bind.shtml |
Changer l'icône de la souris | https://suzutaka-programming.com/tkinter-cursor/ https://anzeljg.github.io/rin2/book2/2405/docs/tkinter/cursors.html |
Afficher des objets/Cacher | https://www.delftstack.com/ja/howto/python-tkinter/how-to-hide-recover-and-delete-tkinter-widgets/ |
Paramètres du bouton radio | https://pg-chain.com/python-radiobutton |
À propos de la grille | https://python.keicode.com/advanced/tkinter-grid.php |
À propos du widget Texte | https://www.shido.info/py/tkinter12.html |
Jugement des seules lettres | https://vatchlog.com/python-alnum/ |
Gestion des variables globales au sein d'une fonction | https://snowtree-injune.com/2018/07/29/post-734/ |
Nom de chaque symbole de prononciation | https://english-columns.weblio.jp/?p=1788 https://ja.wikipedia.org/wiki/%E5%9B%BD%E9%9A%9B%E9%9F%B3%E5%A3%B0%E8%A8%98%E5%8F%B7%E3%81%AE%E6%96%87%E5%AD%97%E4%B8%80%E8%A6%A7 https://eigonokai.jp/phonetics/7-%E6%AF%8D%E9%9F%B3%EF%BC%9A%CA%8C%E3%81%AE%E7%99%BA%E9%9F%B3/ |
Nous vous serions très reconnaissants si vous pouviez nous faire part de vos suggestions d'amélioration de l'interface graphique et des sources! !!
Recommended Posts