Eine Geschichte, in der eine lokale Person, die ein Kätzchen hält, auf Reisen ins Ausland Englisch sprach.
Ausländer "Wie sagt man" Küche "auf Japanisch?" Ich "(?? Warum hörst du das plötzlich ...) DAIDOKORO" Ausländer "?? ...? Was?" Ich selbst "DAIDOKORO!" Ausländer "... Oh, DAIDOKORO! OK! DAIDOKORO!"
Zu einem späteren Zeitpunkt
Ich sagte: "Es gab so etwas. Ich frage mich, warum ich das gehört habe." Mein Freund "Das war Kätzchen statt Küche, nicht wahr? Du hattest ein Kätzchen, oder? "" Ich sagte: "Oh, Kätzchen! Das ist ein Kätzchen! Ich habe einen Fehler gemacht, weil die Aussprache der Küche ähnlich ist! hahaha "
Mein Freund "..."
Ich "Lass uns Englisch lernen ..."
Zeigen Sie zwei Wörter mit ähnlicher Aussprache auf dem Bildschirm an. Spielen Sie eine der Audiodateien nach dem Zufallsprinzip ab. Wählen Sie das Wort aus, das der Benutzer als ausgesprochen bestimmt hat. Zeigen Sie die richtige oder falsche Antwort auf dem Bildschirm an.
Auch verschiedene Wortpaare mit ähnlichen Aussprachesymbolen Sammeln Sie nach Aussprachesymbol und unterscheiden Sie, welches Aussprachesymbol Fordern Sie den Benutzer heraus oder lassen Sie ihn wählen.
Zum Beispiel der Unterschied zwischen 'r'and'l', über den sich viele Menschen, einschließlich mir, Sorgen machen Angenommen, Sie möchten lernen.
Wenn Sie das Spiel starten, zum Beispiel entweder leichte oder rechte Stimme Wird zufällig gespielt und wählen Sie die aus, von der Sie glauben, dass sie gespielt wurde.
Dann wird die richtige oder die falsche Antwort angezeigt.
Übrigens, wie unten gezeigt, sind die Wörter hell und rechts die ersten Sie sind genau gleich, außer dass die phonetischen Symbole l und r sind.
Wort | Aussprachesymbol |
---|---|
light | lάɪt |
right | rάɪt |
Laden Sie auch die Audiodatei mit englischen Wörtern herunter, die in diesem Tool von weblio verwendet werden. Es ist jedoch sehr mühsam, viele englische Wortdateien einzeln herunterzuladen. Es braucht.
Aus diesem Grund habe ich ein Tool entwickelt, mit dem englische Wörter automatisch durch Web-Scraping heruntergeladen werden können. ↓ https://qiita.com/Fuminori_Souma/private/60ce627e66209763d4f2
Mit diesem Tool können Sie ganz einfach die gewünschte Audiodatei herunterladen. Die Audiodatei des in der JSON-Datei dieses Tools beschriebenen Wortes wird jedoch auf Google Drive veröffentlicht (später beschrieben).
Der Bildschirm unmittelbar nach der Ausführung sieht folgendermaßen aus.
Heute werde ich versuchen, zwischen 'und' zu unterscheiden, in denen die Japaner nicht gut sind.
Wenn Sie auf die Schaltfläche "Spiel starten" klicken, wechselt der Bildschirm zum Spielbildschirm. Gibt es insgesamt 14 Fragen?
Als ich die Taste "Audio abspielen" drückte, wurde die Audiodatei abgespielt und ich hatte zwei Möglichkeiten. Ich frage mich, welches ausgesprochen wurde. .. Drücken Sie die Taste "Wieder spielen" und hören Sie erneut zu. Okay, die Spannung auf der linken Seite! Klicken Sie auf den "angespannten" Text, um zu antworten.
Hervorragende Antwort! Du hast es geschafft. Klicken Sie auf "angespannt" und "zehnt", um jeweils zu spielen Lassen Sie uns den Unterschied im Audio überprüfen. Wenn Sie fertig sind, klicken Sie auf die Schaltfläche "Nächstes Problem starten".
Diesmal "Maus" und "Mund"? Okay, Mund!
... nicht wahr? verdammt!
... es ist vorbei. 7 von 14 richtigen Antworten? Nun, es ist in Ordnung (Schweiß) Klicken Sie auf die Schaltfläche "Zurück zum Titel".
Als nächstes versuchen wir, zwischen 'b'und'v' zu unterscheiden.
Ich benutze es so.
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): #Starten Sie das Problem/Spielen Sie erneut Audio ab/Starten Sie das nächste Problem
if bttn_repnxt['text'] == 'Audio abspielen':
global word1
global word2
global rep_word #Wörter tatsächlich ausgesprochen
global id
text_res["text"] = '' #Setzen Sie die Antwort auf die vorherige Frage zurück
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) #Audiodatei abspielen
#Objektstatus ändern
text_w1["text"] = word1
text_w2["text"] = word2
text_ques1["text"] = 'Was wurde ausgesprochen ...'
text_ques2["text"] = 'Welcher?'
bttn_repnxt['text'] = 'Nochmal abspielen'
text_adc.place_forget()
elif bttn_repnxt['text'] == 'Nochmal abspielen':
rep_mp3(rep_word) #Audiodatei abspielen
else: # 'Starten Sie das nächste Problem'
#Objektstatus ändern
bttn_repnxt['text'] = 'Audio abspielen'
text_res.place_forget()
#Starten Sie das nächste Problem (Audiodatei abspielen)
ques_start_next(event)
def rep_mp3(tgt_word): #Audio abspielen
filename = 'C:/Users/fumin/OneDrive/Desktop/English_words/' + tgt_word + '.mp3' #Die MP3-Datei, die Sie abspielen möchten
pygame.mixer.init()
pygame.mixer.music.load(filename) #Laden Sie die Tonquelle
mp3_length = mp3(filename).info.length #Holen Sie sich die Länge der Tonquelle
pygame.mixer.music.play(1) #Die Wiedergabe beginnt. Spielen Sie n Mal, wenn Teil 1 geändert wird(In diesem Fall auch xn die Anzahl der Sekunden in der nächsten Zeile.)
time.sleep(mp3_length + 0.25) #Warten Sie nach dem Start der Wiedergabe auf die Länge der Tonquelle(0.Warten auf 25 ist Fehlerbehebung)
pygame.mixer.music.stop() #Die Wiedergabe stoppt, nachdem auf die Länge der Tonquelle gewartet wurde
def enlarge_word(event): #Größeres Wort mit Mauszeiger
if str(event.widget["text"]) == word1:
text_w1["font"] = ("", 12) #Größere Zeichen
text_w1["cursor"] = "hand2" #Ändern Sie den Mauszeiger in den Zeigefingertyp
else:
text_w2["font"] = ("", 12) #Größere Zeichen
text_w2["cursor"] = "hand2" #Ändern Sie den Mauszeiger in den Zeigefingertyp
def undo_word(event): #Stellt Wörter außerhalb des Mauszeigers auf ihre ursprüngliche Größe wieder her
if str(event.widget["text"]) == word1:
text_w1["font"] = ("", 10) #Zeigen Sie Zeichen in der ersten Größe an
else:
text_w2["font"] = ("", 10) #Zeigen Sie Zeichen in der ersten Größe an
def choose_word(event): #Stellen Sie fest, ob das vom Benutzer ausgewählte Wort korrekt ist
global oknum
global renum
if bttn_repnxt['text'] == 'Nochmal abspielen':
#Zeigen Sie die richtigen Antworten und Notizen an
text_res.place(x=175, y=130)
text_adc.place(x=130, y=160)
if str(event.widget["text"]) == word1: #Wenn Sie das Wort links auswählen
if rep_word == word1:
text_res["text"] = 'Richtige Antwort!!'
else:
text_res["text"] = 'Falsche Antwort…'
else: #Wenn Sie das Wort rechts auswählen
if rep_word == word2:
text_res["text"] = 'Richtige Antwort!!'
else:
text_res["text"] = 'Falsche Antwort…'
if text_res["text"] == 'Richtige Antwort!!':
oknum = oknum + 1 #Fügen Sie die Anzahl der richtigen Antworten hinzu
text_res["foreground"] = 'blue'
else:
text_res["foreground"] = 'red'
renum -= 1 #Subtrahieren Sie die Anzahl der verbleibenden Fragen
#Objektstatus ändern
text_scr['text'] = 'Ergebnis:' + str(oknum) + '/' + str(qunum)
text_rest['text'] = 'verbleibend:' + str(renum)
text_ques1["text"] = ''
text_ques2["text"] = ''
bttn_repnxt["text"] = 'Starten Sie das nächste Problem'
if renum == 0: #Wenn alle Probleme vorbei sind
bttn_repnxt.place_forget()
text_end.place(x=110, y=320)
elif bttn_repnxt['text'] == 'Starten Sie das nächste Problem': #Spielen Sie Audio für die nächste Ausgabe ab
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): #Generieren Sie ein Optionsfeld auf dem Titelbildschirm
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'): #Aussprachesymbole auf dem Titelbildschirm(Bild)Generieren Sie a
if row == 'df' and column == 'df'and pdx == 'df'and num == 'df': #Für den Titelbildschirm
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: #Im Falle des Spielstartbildschirms
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(): #Wählen Sie ein Aussprachesymbol aus, das Sie studieren möchten
global rbnum
global ps
rbnum = int(var.get()) #Ausgewähltes Optionsfeld(=Aussprachesymbol)Speichern Sie die Nummer von
ps = list(wordlist['Wordlist'])[rbnum] #Wählen Sie das ausgewählte Aussprachesymbol aus
def switch_mode(event): #Starte das Spiel/Kehren Sie zum Titelbildschirm zurück
global qunum #Anzahl der Gesamtprobleme
global oknum #Anzahl der richtigen Fragen
global renum #Anzahl der verbleibenden Probleme
global quorder #Reihenfolge der Fragen Fragen
if bttn_swmode['text'] == 'Spiel starten':
#Blenden Sie das Objekt aus, das sich auf dem ersten Bildschirm befand
frame.place_forget()
text_title.place_forget()
text_ques3.place_forget()
#Objekte für das Spiel anzeigen
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()
#verschiedene Einstellungen
oknum = 0
qunum = len(wordlist['Wordlist'][ps])
renum = qunum
text_scr['text'] = 'Ergebnis:' + str(oknum) + '/' + str(qunum)
text_rest['text'] = 'verbleibend:' + str(renum)
quorder = random.sample(range(1, qunum + 1), k=qunum)
bttn_swmode['text'] = 'Zurück zum Titel'
text_w1["text"] = ''
text_w2["text"] = ''
text_ques1["text"] = ''
text_ques2["text"] = ''
bttn_repnxt['text'] = 'Audio abspielen'
else: #Kehren Sie zum Titelbildschirm zurück
if renum == 0 or (renum != 0 and messagebox.askyesno('Bestätigung', 'Es gibt immer noch Probleme. Möchten Sie zum Titelbildschirm zurückkehren?')):
# if messagebox.askyesno('Bestätigung', 'Es gibt immer noch Probleme. Möchten Sie zum Titelbildschirm zurückkehren?'):
#Verstecke Objekte, die sich auf dem Spielbildschirm befanden
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()
#Objekte für den Titelbildschirm anzeigen
frame.place(x=90, y=90)
text_title.place(x=110, y=30)
text_ques3.place(x=90, y=65)
bttn_swmode['text'] = 'Spiel starten'
#Bildschirmanzeige
root = tkinter.Tk()
root.title(u"Aussprache")
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)
#Beschriftungseinstellungen
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'Wähle ein phonetisches Symbol und starte das Spiel.')
text_ques3.place(x=90, y=65)
text_ps = tkinter.Label(text=u'Aussprachesymbol:')
text_adc = tkinter.Label(text=u'* Klicken Sie auf jedes Wort, um die Stimme abzuspielen')
text_res = tkinter.Label(text=u'')
text_scr = tkinter.Label(text=u'')
text_rest = tkinter.Label(text=u'')
text_title = tkinter.Label(text=u'Aussprache(Temporär)', font=(u'MS morgen früh', 20))
text_title.place(x=110, y=30)
text_end = tkinter.Label(text=u'Das Spiel mit diesem Aussprachesymbol ist beendet.')
text_end["foreground"] = 'green'
#Druckknopfeinstellungen
bttn_repnxt = tkinter.Button(text=u'Audio abspielen', width=11)
bttn_repnxt.bind("<Button-1>", ques_start_next) # (Button-2 für Radklick, 3 für Rechtsklick)
bttn_swmode = tkinter.Button(text=u'Spiel starten', width=10)
bttn_swmode.bind("<Button-1>", switch_mode) # (Button-2 für Radklick, 3 für Rechtsklick)
bttn_swmode.place(x=157, y=380)
#Einstellen der Parameter für die Platzierung der Optionsfelder
xinvl = 30
yinvl = 0
var = StringVar()
var.set('0') #Setzen Sie das Optionsfeld auf "deaktiviert"
f = open("C:/Users/fumin/OneDrive/Desktop/Wordlist.json", 'r')
wordlist = json.load(f)
oknum = 0
rb_clicked() #Optionsfeld im Ausgangszustand ausgewählt
#Initialisierung von Variablen, die Bildinformationen und Optionsfeldinformationen speichern
pngfile = [''] * len(wordlist['Wordlist'])
cv = [''] * len(wordlist['Wordlist'])
rdbtn = [''] * len(wordlist['Wordlist'])
#Radio knopf/Einstellung des Aussprachesymbols
for i in range(int(len(wordlist['Wordlist'])/2)):
ipadx = 10
pngfile[i*2] = PhotoImage(file="C:/Users/fumin/OneDrive/Bild/" + list(wordlist['Wordlist'])[i * 2] + ".PNG")
pngfile[i*2+1] = PhotoImage(file="C:/Users/fumin/OneDrive/Bild/" + 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"
}
}
}
}
Unten gespeichert. https://drive.google.com/open?id=1u4l5wo-6SC00Ys0xBZO_am1v2yPjb_NU
Eigentlich denke ich, dass das Management bei Github effizient ist, ohne dies zu tun. .. Da ich studiere, habe ich es vorübergehend in Google Drive gespeichert.
Laden Sie die auf dem obigen Laufwerk gespeicherte Datei lokal herunter und ändern Sie das in .py beschriebene Verzeichnis wie unten gezeigt entsprechend dem lokalen Speicherort. (Es ist mühsam)
Platz zum setzen | Quellenänderungen |
---|---|
Audiodatei (mp3) | Verzeichnis auf der rechten Seite der Variablen "Dateiname" |
JSON-Datei | Verzeichnis auf der rechten Seite der Variablen "f" |
Bilddatei (png) | Verzeichnis auf der rechten Seite der Variablen "pngfile" |
Wie oben erwähnt, organisiert die JSON-Datei Wortpaare für jedes unterschiedliche Aussprachesymbol. Da die Aussprachesymbole nicht behandelt werden können, selbst wenn sie so geschrieben sind, wie sie sind, wurden sie wie unten gezeigt in Englisch geschrieben.
Aussprachesymbol | Name | Wie schreibe ich in json oben |
---|---|---|
æ | Asche | ash |
ʃ | Esh | esh |
ə | Schwar | schwa |
ɚ | Mit Haken(hooked)Schwar | hschwa |
ɔ | Öffnen Sie o | oo |
α | Alpha | alfa |
ː | Langer Vokal Doppelpunkt | lvc |
ʌ | Carrett, Keil, Hut | crt |
ð | Eze | eth |
θ | Theta | th |
Im Fall eines Paares von "ɚ" und "ː" wird es beispielsweise als "hschwa_lvc" beschrieben.
Übrigens werden a, r, v usw. so beschrieben, wie sie sind.
Eigentlich habe ich eine ähnliche App mit C ++ / CLI erstellt, die eine Erweiterung von C ++ für .NET ist und auf das folgende Buch anstelle von Python verweist.
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
Ich kämpfte jedoch vor der schwierigen Sprache, dass die Spezifikation von C ++ / CLR kompliziert war und keine Informationen enthielt, und obwohl ich es schaffte, etwas Ähnliches wie diesen Beitrag zu erstellen, wurde es aufgrund mangelnder Wartbarkeit schwierig, damit umzugehen. Ich habe es mit Python neu gemacht und in diesem Artikel gepostet.
Besonderer Dank geht an Folgendes. Ich bin Ihnen für alle nützlichen Informationen sehr dankbar.
Inhalt | Linkziel |
---|---|
So spielen Sie Audiodateien ab | https://qiita.com/kekeho/items/a0b93695d8a8ac6f1028 |
Wie man mit json umgeht | https://qiita.com/kikuchiTakuya/items/53990fca06fb9ba1d8a7 |
So greifen Sie zufällig auf den Wörterbuchtyp zu | https://teratail.com/questions/108589 |
Implementierung der Verarbeitung, wenn der Mauszeiger auf dem Widget platziert wird | https://tutorialmore.com/questions-716474.htm |
Ereignisfolge | http://www.rouge.gr.jp/~fuku/tips/python-tkinter/bind.shtml |
Maussymbol ändern | https://suzutaka-programming.com/tkinter-cursor/ https://anzeljg.github.io/rin2/book2/2405/docs/tkinter/cursors.html |
Objekte anzeigen/Ausblenden | https://www.delftstack.com/ja/howto/python-tkinter/how-to-hide-recover-and-delete-tkinter-widgets/ |
Optionsfeldeinstellungen | https://pg-chain.com/python-radiobutton |
Über Gitter | https://python.keicode.com/advanced/tkinter-grid.php |
Über das Text-Widget | https://www.shido.info/py/tkinter12.html |
Beurteilung nur von Briefen | https://vatchlog.com/python-alnum/ |
Umgang mit globalen Variablen innerhalb einer Funktion | https://snowtree-injune.com/2018/07/29/post-734/ |
Name jedes Aussprachesymbols | 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/ |
Wir wären Ihnen sehr dankbar, wenn Sie uns Feedback zu Verbesserungsvorschlägen für die GUI und die Quellen geben könnten! !!
Recommended Posts