diff --git a/anki-hsk-creator/__main__.py b/anki-hsk-creator/__main__.py
index 8df4382..b3aa69a 100644
--- a/anki-hsk-creator/__main__.py
+++ b/anki-hsk-creator/__main__.py
@@ -44,34 +44,34 @@ font-size: 75px;
## Classess
-SIMPLE_MODEL = Model(
+PHRASE_MODEL = Model(
2076166425,
- "Simple Model",
+ "Phrase Model",
fields=[
- {"name": "Question"},
- {"name": "Answer"},
+ {"name": "Translated"},
+ {"name": "Phrase"},
+ {"name": "Audio"},
],
templates=[
{
"name": "Card 1",
- "qfmt": "{{Question}}",
- "afmt": '{{FrontSide}}
{{Answer}}',
+ "qfmt": "{{Translated}}
{{Audio}}",
+ "afmt": '{{FrontSide}}
{{Phrase}}',
+ },
+ {
+ "name": "Card 2",
+ "qfmt": "{{Phrase}}
{{Audio}}",
+ "afmt": '{{FrontSide}}
{{Translated}}',
+ },
+ {
+ "name": "Card 3",
+ "qfmt": "{{Audio}}",
+ "afmt": '{{FrontSide}}
{{Phrase}}',
},
],
css=CSS,
)
-HSK_FRONT_TEMPLATE = """
-
-{{Pinyin}}
-
-
-
-{{English}}
-
-
-{{Audio}}
-"""
HSK_MODEL = Model(
1708536519,
@@ -81,12 +81,12 @@ HSK_MODEL = Model(
{"name": "Pinyin"},
{"name": "Simplified"},
{"name": "Traditional"},
- {'name': 'Audio'},
+ {"name": "Audio"},
],
templates=[
{
"name": "Card 1",
- "qfmt": HSK_FRONT_TEMPLATE,
+ "qfmt": "{{Pinyin}}
{{English}}
{{Audio}}",
"afmt": "{{FrontSide}}
"
"{{Simplified}}
{{Traditional}}
",
},
@@ -96,6 +96,12 @@ HSK_MODEL = Model(
"{{Traditional}}",
"afmt": '{{FrontSide}}
{{Pinyin}}
{{English}}
{{Audio}}',
},
+ {
+ "name": "Card 1",
+ "qfmt": "{{Audio}}",
+ "afmt": "{{FrontSide}}
{{Pinyin}}
"
+ "{{Simplified}}
{{Traditional}}
",
+ },
],
css=CSS,
)
@@ -129,6 +135,7 @@ def create_translator():
)
argostranslate.package.install_from_path(package_to_install.download())
+
def create_tts():
# Automatically detect the best available device
if torch.cuda.is_available():
@@ -137,9 +144,10 @@ def create_tts():
device = "mps"
else:
device = "cpu"
- tts = ChatterboxMultilingualTTS.from_pretrained(device=device)
+ tts = ChatterboxMultilingualTTS.from_pretrained(device=device, t3_model="v3")
return tts
+
## Main
@@ -162,7 +170,7 @@ def process_files():
level = selected
relative = in_file.relative_to(INPUT)
out_file = OUTPUT / relative
- resources = RESOURCES / relative
+ resources = RESOURCES / relative
resources = resources.parent / resources.stem
resources.mkdir(parents=True, exist_ok=True)
out_file.parent.mkdir(parents=True, exist_ok=True)
@@ -174,7 +182,7 @@ def process_files():
def dictionary_process(dictionary, tts, in_file, resources):
"""Process dictionary files"""
words_list = in_file.open(encoding="utf8").read().strip().split("\n")
- results = []
+ results = []
try:
with in_file.open("w", encoding="utf8") as input_file:
for words in words_list:
@@ -193,8 +201,14 @@ def dictionary_process(dictionary, tts, in_file, resources):
for m in w.meanings:
print(f"\t{m}")
s = None
- while not s or not s.isnumeric() or not (1 <= int(s) <= len(v)):
- s = input(f"Please select the correct word [1-{len(v)}]: ")
+ while (
+ not s
+ or not s.isnumeric()
+ or not (1 <= int(s) <= len(v))
+ ):
+ s = input(
+ f"Please select the correct word [1-{len(v)}]: "
+ )
v = v[int(s) - 1]
else:
v = ml[0]
@@ -202,7 +216,7 @@ def dictionary_process(dictionary, tts, in_file, resources):
v = v[0]
audio_path = resources / f"{word}.wav"
if not audio_path.exists():
- audio = tts.generate(word, language_id="zh")
+ audio = tts.generate(f"{word}。", language_id="zh")
torchaudio.save(audio_path, audio, tts.sr)
input_file.write(f"{word}\t{v.pinyin}\n")
results.append((v, audio_path))
@@ -217,16 +231,18 @@ def dictionary_process(dictionary, tts, in_file, resources):
return results
-def translator_process(in_file):
- """Process text trasnlate files"""
- text_list = in_file.open(encoding="utf8").read().split()[1:]
+def translator_process(tts, resources, in_file):
+ """Process for phases trasnlation"""
+ text_list = in_file.open(encoding="utf8").read().strip().split()
results = []
- for text in text_list:
- text = text.strip()
- for par in text.split("。"):
- if par:
- translatedText = argostranslate.translate.translate(par, CN, EN)
- results.append([translatedText, par])
+ for n, phrase in enumerate(text_list):
+ phrase = phrase.strip()
+ audio_path = resources / f"N{n}.wav"
+ if not audio_path.exists():
+ audio = tts.generate(f"{phrase}。", language_id="zh")
+ torchaudio.save(audio_path, audio, tts.sr)
+ translated = argostranslate.translate.translate(phrase, CN, EN)
+ results.append([translated, phrase, audio_path])
return results
@@ -260,41 +276,50 @@ def output_anki_dictionary(out_file, results):
PinyinToneConverter().convert_text(entry.pinyin),
entry.simplified,
entry.traditional,
- f"[sound:{audio.name}]"
+ f"[sound:{audio.name}]",
],
)
audios.append(audio)
deck.add_note(note)
package.media_files = audios
package.write_to_file(final_file)
-
-def output_anki_text(out_file, results):
+
+def output_anki_phrase(out_file, results):
final_file = out_file.parent / f"{out_file.stem}.apkg"
deck_name = "::".join(out_file.relative_to(OUTPUT).parts[:-1] + (out_file.stem,))
deck = Deck(random.randrange(1 << 30, 1 << 31), deck_name)
- for entry in results:
+ package = Package(deck)
+ audios = []
+ for translated, phrase, audio in results:
note = Note(
- model=SIMPLE_MODEL,
- fields=entry,
+ model=PHRASE_MODEL,
+ fields=[
+ translated,
+ phrase,
+ f"[sound:{audio.name}]",
+ ],
)
deck.add_note(note)
- Package(deck).write_to_file(final_file)
+ audios.append(audio)
+ package.media_files = audios
+ package.write_to_file(final_file)
def main():
- in_file, out_file, resources, file_type = process_files()
- if PHRASES_TYPE in in_file.suffixes:
- create_translator()
- results = translator_process(in_file)
- output_anki_text(out_file, results)
- elif DICT_TYPE in in_file.suffixes:
- tts = create_tts()
- dictionary = create_cedict()
- results = dictionary_process(dictionary, tts, in_file, resources)
- output_anki_dictionary(out_file, results)
- else:
- raise TypeError("Error, filetype not especified!")
+ tts = create_tts()
+ dictionary = create_cedict()
+ create_translator()
+ while True:
+ in_file, out_file, resources, file_type = process_files()
+ if PHRASES_TYPE in in_file.suffixes:
+ results = translator_process(tts, resources, in_file)
+ output_anki_phrase(out_file, results)
+ elif DICT_TYPE in in_file.suffixes:
+ results = dictionary_process(dictionary, tts, in_file, resources)
+ output_anki_dictionary(out_file, results)
+ else:
+ raise TypeError("Error, filetype not especified!")
if __name__ == "__main__":
diff --git a/data/input/HSK1/HSK1-2.dictionary.txt b/data/input/HSK1/HSK1-2.dictionary.txt
index dce1ed0..da1c73b 100644
--- a/data/input/HSK1/HSK1-2.dictionary.txt
+++ b/data/input/HSK1/HSK1-2.dictionary.txt
@@ -1,4 +1,4 @@
-谢谢
-不
-不客气
-再见
\ No newline at end of file
+谢谢 xie4 xie5
+不 bu4
+不客气 bu4 ke4 qi5
+再见 zai4 jian4
diff --git a/data/input/HSK1/HSK1-2.phrases.txt b/data/input/HSK1/HSK1-2.phrases.txt
index 388f7f6..63cc199 100644
--- a/data/input/HSK1/HSK1-2.phrases.txt
+++ b/data/input/HSK1/HSK1-2.phrases.txt
@@ -1,2 +1,7 @@
不谢
-谢谢你
\ No newline at end of file
+谢谢你
+打开书
+清大声读
+再读一遍
+一起读
+有问题吗?
\ No newline at end of file
diff --git a/data/input/HSK1/HSK1-3.dictionary.txt b/data/input/HSK1/HSK1-3.dictionary.txt
index 399d348..028baff 100644
--- a/data/input/HSK1/HSK1-3.dictionary.txt
+++ b/data/input/HSK1/HSK1-3.dictionary.txt
@@ -1,12 +1,12 @@
-叫
-什么
-名字
-我
-是
-老师
-吗
-学生
-人
-李明
-中国
-美国
+叫 jiao4
+什么 shen2 me5
+名字 ming2 zi5
+我 wo3
+是 shi4
+老师 lao3 shi1
+吗 ma5
+学生 xue2 sheng5
+人 ren2
+李明 ERROR
+中国 Zhong1 guo2
+美国 Mei3 guo2
diff --git a/data/input/HSK1/HSK1-3.phrases.txt b/data/input/HSK1/HSK1-3.phrases.txt
new file mode 100644
index 0000000..71ab0ae
--- /dev/null
+++ b/data/input/HSK1/HSK1-3.phrases.txt
@@ -0,0 +1,6 @@
+你叫什么名字?
+我叫李月。
+你是老师吗?
+我不是老师, 我是学生。
+你中国人么?
+我不是中国人,我是美国人。
\ No newline at end of file
diff --git a/data/input/HSK1/HSK1-4.dictionary.txt b/data/input/HSK1/HSK1-4.dictionary.txt
index 27da69d..d642296 100644
--- a/data/input/HSK1/HSK1-4.dictionary.txt
+++ b/data/input/HSK1/HSK1-4.dictionary.txt
@@ -1,12 +1,12 @@
-她
-他
-谁
-的
-汉语
-哪
-国
-呢
-他
-同学
-朋友
-委内瑞拉
\ No newline at end of file
+她 ta1
+他 ta1
+谁 shei2
+的 de5
+汉语 Han4 yu3
+哪 na3
+国 guo2
+呢 ne5
+他 ta1
+同学 tong2 xue2
+朋友 peng2 you5
+委内瑞拉 Wei3 nei4 rui4 la1
diff --git a/data/input/HSK1/HSK1-4.phrases.txt b/data/input/HSK1/HSK1-4.phrases.txt
new file mode 100644
index 0000000..72f304e
--- /dev/null
+++ b/data/input/HSK1/HSK1-4.phrases.txt
@@ -0,0 +1,9 @@
+他是谁?
+他是我的汉语老师,他叫李月。
+你是哪国人?
+我是美国人,你呢?
+我是中国人。
+他是谁?
+他是我同学。
+他呢?他是你同学吗?
+他不是我同学,她是我朋友。
\ No newline at end of file
diff --git a/data/input/汉语口语新时代-初级下/HSK1-4.phrases.txt b/data/input/汉语口语新时代-初级下/HSK1-4.phrases.txt
new file mode 100644
index 0000000..72f304e
--- /dev/null
+++ b/data/input/汉语口语新时代-初级下/HSK1-4.phrases.txt
@@ -0,0 +1,9 @@
+他是谁?
+他是我的汉语老师,他叫李月。
+你是哪国人?
+我是美国人,你呢?
+我是中国人。
+他是谁?
+他是我同学。
+他呢?他是你同学吗?
+他不是我同学,她是我朋友。
\ No newline at end of file
diff --git a/data/input/口语/口语-第10课.dictionary.txt b/data/input/汉语口语新时代-初级下/口语-第10课.dictionary.txt
similarity index 100%
rename from data/input/口语/口语-第10课.dictionary.txt
rename to data/input/汉语口语新时代-初级下/口语-第10课.dictionary.txt
diff --git a/data/input/口语/口语-第10课.phrases.txt b/data/input/汉语口语新时代-初级下/口语-第10课.phrases.txt
similarity index 100%
rename from data/input/口语/口语-第10课.phrases.txt
rename to data/input/汉语口语新时代-初级下/口语-第10课.phrases.txt
diff --git a/data/input/口语/口语-第1课.dictionary.txt b/data/input/汉语口语新时代-初级下/口语-第1课.dictionary.txt
similarity index 100%
rename from data/input/口语/口语-第1课.dictionary.txt
rename to data/input/汉语口语新时代-初级下/口语-第1课.dictionary.txt
diff --git a/data/input/口语/口语-第2课.dictionary.txt b/data/input/汉语口语新时代-初级下/口语-第2课.dictionary.txt
similarity index 100%
rename from data/input/口语/口语-第2课.dictionary.txt
rename to data/input/汉语口语新时代-初级下/口语-第2课.dictionary.txt
diff --git a/data/input/口语/口语-第3课.dictionary.txt b/data/input/汉语口语新时代-初级下/口语-第3课.dictionary.txt
similarity index 100%
rename from data/input/口语/口语-第3课.dictionary.txt
rename to data/input/汉语口语新时代-初级下/口语-第3课.dictionary.txt
diff --git a/data/input/口语/口语-第4课.dictionary.txt b/data/input/汉语口语新时代-初级下/口语-第4课.dictionary.txt
similarity index 100%
rename from data/input/口语/口语-第4课.dictionary.txt
rename to data/input/汉语口语新时代-初级下/口语-第4课.dictionary.txt
diff --git a/data/input/口语/口语-第5课.dictionary.txt b/data/input/汉语口语新时代-初级下/口语-第5课.dictionary.txt
similarity index 100%
rename from data/input/口语/口语-第5课.dictionary.txt
rename to data/input/汉语口语新时代-初级下/口语-第5课.dictionary.txt
diff --git a/data/input/口语/口语-第6课.dictionary.txt b/data/input/汉语口语新时代-初级下/口语-第6课.dictionary.txt
similarity index 100%
rename from data/input/口语/口语-第6课.dictionary.txt
rename to data/input/汉语口语新时代-初级下/口语-第6课.dictionary.txt
diff --git a/data/input/口语/口语-第7课.dictionary.txt b/data/input/汉语口语新时代-初级下/口语-第7课.dictionary.txt
similarity index 100%
rename from data/input/口语/口语-第7课.dictionary.txt
rename to data/input/汉语口语新时代-初级下/口语-第7课.dictionary.txt
diff --git a/data/input/口语/口语-第8课.dictionary.txt b/data/input/汉语口语新时代-初级下/口语-第8课.dictionary.txt
similarity index 100%
rename from data/input/口语/口语-第8课.dictionary.txt
rename to data/input/汉语口语新时代-初级下/口语-第8课.dictionary.txt
diff --git a/data/input/口语/口语-第9课.dictionary.txt b/data/input/汉语口语新时代-初级下/口语-第9课.dictionary.txt
similarity index 100%
rename from data/input/口语/口语-第9课.dictionary.txt
rename to data/input/汉语口语新时代-初级下/口语-第9课.dictionary.txt
diff --git a/data/input/口语/口语-第9课.phrases.txt b/data/input/汉语口语新时代-初级下/口语-第9课.phrases.txt
similarity index 100%
rename from data/input/口语/口语-第9课.phrases.txt
rename to data/input/汉语口语新时代-初级下/口语-第9课.phrases.txt
diff --git a/data/input/汉语口语新时代-初级下/第11课-1.dictionary.txt b/data/input/汉语口语新时代-初级下/第11课-1.dictionary.txt
new file mode 100644
index 0000000..c884502
--- /dev/null
+++ b/data/input/汉语口语新时代-初级下/第11课-1.dictionary.txt
@@ -0,0 +1,14 @@
+温柔 wen1 rou2
+星星 xing1 xing5
+摘 zhai1
+颗 ke1
+亲手 qin1 shou3
+浪漫 lang4 man4
+飞行员 fei1 xing2 yuan2
+标准 biao1 zhun3
+考虑 kao3 lu:4
+十全十美 shi2 quan2 shi2 mei3
+理想 li3 xiang3
+支持 zhi1 chi2
+性格 xing4 ge2
+恋爱 lian4 ai4
diff --git a/data/input/汉语口语新时代-初级下/第11课-1.phrases.txt b/data/input/汉语口语新时代-初级下/第11课-1.phrases.txt
new file mode 100644
index 0000000..3ffedd4
--- /dev/null
+++ b/data/input/汉语口语新时代-初级下/第11课-1.phrases.txt
@@ -0,0 +1,8 @@
+她每年都会送孩子新年礼物
+有一年,孩子要星星,她没办法去亲手,就摘颗送给他。
+有些人在选择男/女朋友时总是有很高的标准,会考虑很多方面。
+但是世界上哪有理想的人啊?
+我觉得十全十美的男/女朋友就是在一起时每天都很开心。
+我理想中的女朋友有两个标准:
+第一,性格要非常温柔;
+第二,要支挡我的工作,即使。
\ No newline at end of file
diff --git a/data/output/HSK1/HSK1-1.dictionary.apkg b/data/output/HSK1/HSK1-1.dictionary.apkg
index 0b4b811..a21141b 100644
Binary files a/data/output/HSK1/HSK1-1.dictionary.apkg and b/data/output/HSK1/HSK1-1.dictionary.apkg differ
diff --git a/data/output/HSK1/HSK1-1.phrases.apkg b/data/output/HSK1/HSK1-1.phrases.apkg
new file mode 100644
index 0000000..108b56d
Binary files /dev/null and b/data/output/HSK1/HSK1-1.phrases.apkg differ
diff --git a/data/output/HSK1/HSK1-2.dictionary.apkg b/data/output/HSK1/HSK1-2.dictionary.apkg
new file mode 100644
index 0000000..43aab21
Binary files /dev/null and b/data/output/HSK1/HSK1-2.dictionary.apkg differ
diff --git a/data/output/HSK1/HSK1-2.phrases.apkg b/data/output/HSK1/HSK1-2.phrases.apkg
new file mode 100644
index 0000000..de95411
Binary files /dev/null and b/data/output/HSK1/HSK1-2.phrases.apkg differ
diff --git a/data/output/HSK1/HSK1-3.dictionary.apkg b/data/output/HSK1/HSK1-3.dictionary.apkg
new file mode 100644
index 0000000..7517220
Binary files /dev/null and b/data/output/HSK1/HSK1-3.dictionary.apkg differ
diff --git a/data/output/HSK1/HSK1-3.phrases.apkg b/data/output/HSK1/HSK1-3.phrases.apkg
new file mode 100644
index 0000000..4683e52
Binary files /dev/null and b/data/output/HSK1/HSK1-3.phrases.apkg differ
diff --git a/data/output/HSK1/HSK1-4.dictionary.apkg b/data/output/HSK1/HSK1-4.dictionary.apkg
new file mode 100644
index 0000000..746b5c7
Binary files /dev/null and b/data/output/HSK1/HSK1-4.dictionary.apkg differ
diff --git a/data/output/HSK1/HSK1-4.phrases.apkg b/data/output/HSK1/HSK1-4.phrases.apkg
new file mode 100644
index 0000000..24aa21e
Binary files /dev/null and b/data/output/HSK1/HSK1-4.phrases.apkg differ
diff --git a/data/output/汉语口语新时代-初级下/第11课-1.dictionary.apkg b/data/output/汉语口语新时代-初级下/第11课-1.dictionary.apkg
new file mode 100644
index 0000000..b49f6e7
Binary files /dev/null and b/data/output/汉语口语新时代-初级下/第11课-1.dictionary.apkg differ
diff --git a/data/output/汉语口语新时代-初级下/第11课-1.phrases.apkg b/data/output/汉语口语新时代-初级下/第11课-1.phrases.apkg
new file mode 100644
index 0000000..8409d80
Binary files /dev/null and b/data/output/汉语口语新时代-初级下/第11课-1.phrases.apkg differ
diff --git a/data/resources/HSK1/HSK1-1.dictionary/你.wav b/data/resources/HSK1/HSK1-1.dictionary/你.wav
index cbdb916..e074ed8 100644
Binary files a/data/resources/HSK1/HSK1-1.dictionary/你.wav and b/data/resources/HSK1/HSK1-1.dictionary/你.wav differ
diff --git a/data/resources/HSK1/HSK1-1.dictionary/你好.wav b/data/resources/HSK1/HSK1-1.dictionary/你好.wav
index 0d545ac..a19351d 100644
Binary files a/data/resources/HSK1/HSK1-1.dictionary/你好.wav and b/data/resources/HSK1/HSK1-1.dictionary/你好.wav differ
diff --git a/data/resources/HSK1/HSK1-1.dictionary/好.wav b/data/resources/HSK1/HSK1-1.dictionary/好.wav
index 51c43a4..e8dc63e 100644
Binary files a/data/resources/HSK1/HSK1-1.dictionary/好.wav and b/data/resources/HSK1/HSK1-1.dictionary/好.wav differ
diff --git a/data/resources/HSK1/HSK1-1.dictionary/对不起.wav b/data/resources/HSK1/HSK1-1.dictionary/对不起.wav
index b6a56f2..3cbb9c5 100644
Binary files a/data/resources/HSK1/HSK1-1.dictionary/对不起.wav and b/data/resources/HSK1/HSK1-1.dictionary/对不起.wav differ
diff --git a/data/resources/HSK1/HSK1-1.dictionary/您.wav b/data/resources/HSK1/HSK1-1.dictionary/您.wav
index 27b100e..867c0fd 100644
Binary files a/data/resources/HSK1/HSK1-1.dictionary/您.wav and b/data/resources/HSK1/HSK1-1.dictionary/您.wav differ
diff --git a/data/resources/HSK1/HSK1-1.dictionary/您好.wav b/data/resources/HSK1/HSK1-1.dictionary/您好.wav
index 69873d1..2707aee 100644
Binary files a/data/resources/HSK1/HSK1-1.dictionary/您好.wav and b/data/resources/HSK1/HSK1-1.dictionary/您好.wav differ
diff --git a/data/resources/HSK1/HSK1-1.dictionary/没关系.wav b/data/resources/HSK1/HSK1-1.dictionary/没关系.wav
index fbfaef7..a132207 100644
Binary files a/data/resources/HSK1/HSK1-1.dictionary/没关系.wav and b/data/resources/HSK1/HSK1-1.dictionary/没关系.wav differ
diff --git a/data/resources/HSK1/HSK1-1.phrases/N0.wav b/data/resources/HSK1/HSK1-1.phrases/N0.wav
new file mode 100644
index 0000000..5543c19
Binary files /dev/null and b/data/resources/HSK1/HSK1-1.phrases/N0.wav differ
diff --git a/data/resources/HSK1/HSK1-1.phrases/N1.wav b/data/resources/HSK1/HSK1-1.phrases/N1.wav
new file mode 100644
index 0000000..342b4d1
Binary files /dev/null and b/data/resources/HSK1/HSK1-1.phrases/N1.wav differ
diff --git a/data/resources/HSK1/HSK1-1.phrases/N2.wav b/data/resources/HSK1/HSK1-1.phrases/N2.wav
new file mode 100644
index 0000000..46df850
Binary files /dev/null and b/data/resources/HSK1/HSK1-1.phrases/N2.wav differ
diff --git a/data/resources/HSK1/HSK1-1.phrases/N3.wav b/data/resources/HSK1/HSK1-1.phrases/N3.wav
new file mode 100644
index 0000000..4fc9c13
Binary files /dev/null and b/data/resources/HSK1/HSK1-1.phrases/N3.wav differ
diff --git a/data/resources/HSK1/HSK1-1.phrases/N4.wav b/data/resources/HSK1/HSK1-1.phrases/N4.wav
new file mode 100644
index 0000000..1f03fd9
Binary files /dev/null and b/data/resources/HSK1/HSK1-1.phrases/N4.wav differ
diff --git a/data/resources/HSK1/HSK1-1.phrases/N5.wav b/data/resources/HSK1/HSK1-1.phrases/N5.wav
new file mode 100644
index 0000000..fafcb4a
Binary files /dev/null and b/data/resources/HSK1/HSK1-1.phrases/N5.wav differ
diff --git a/data/resources/HSK1/HSK1-1.phrases/N6.wav b/data/resources/HSK1/HSK1-1.phrases/N6.wav
new file mode 100644
index 0000000..7561089
Binary files /dev/null and b/data/resources/HSK1/HSK1-1.phrases/N6.wav differ
diff --git a/data/resources/HSK1/HSK1-2.dictionary/不.wav b/data/resources/HSK1/HSK1-2.dictionary/不.wav
new file mode 100644
index 0000000..f425264
Binary files /dev/null and b/data/resources/HSK1/HSK1-2.dictionary/不.wav differ
diff --git a/data/resources/HSK1/HSK1-2.dictionary/不客气.wav b/data/resources/HSK1/HSK1-2.dictionary/不客气.wav
new file mode 100644
index 0000000..c2e25d0
Binary files /dev/null and b/data/resources/HSK1/HSK1-2.dictionary/不客气.wav differ
diff --git a/data/resources/HSK1/HSK1-2.dictionary/再见.wav b/data/resources/HSK1/HSK1-2.dictionary/再见.wav
new file mode 100644
index 0000000..65e8c3b
Binary files /dev/null and b/data/resources/HSK1/HSK1-2.dictionary/再见.wav differ
diff --git a/data/resources/HSK1/HSK1-2.dictionary/谢谢.wav b/data/resources/HSK1/HSK1-2.dictionary/谢谢.wav
new file mode 100644
index 0000000..b41593a
Binary files /dev/null and b/data/resources/HSK1/HSK1-2.dictionary/谢谢.wav differ
diff --git a/data/resources/HSK1/HSK1-2.phrases/N0.wav b/data/resources/HSK1/HSK1-2.phrases/N0.wav
new file mode 100644
index 0000000..54254ef
Binary files /dev/null and b/data/resources/HSK1/HSK1-2.phrases/N0.wav differ
diff --git a/data/resources/HSK1/HSK1-2.phrases/N1.wav b/data/resources/HSK1/HSK1-2.phrases/N1.wav
new file mode 100644
index 0000000..408c4e3
Binary files /dev/null and b/data/resources/HSK1/HSK1-2.phrases/N1.wav differ
diff --git a/data/resources/HSK1/HSK1-2.phrases/N2.wav b/data/resources/HSK1/HSK1-2.phrases/N2.wav
new file mode 100644
index 0000000..f747679
Binary files /dev/null and b/data/resources/HSK1/HSK1-2.phrases/N2.wav differ
diff --git a/data/resources/HSK1/HSK1-2.phrases/N3.wav b/data/resources/HSK1/HSK1-2.phrases/N3.wav
new file mode 100644
index 0000000..1b61ccb
Binary files /dev/null and b/data/resources/HSK1/HSK1-2.phrases/N3.wav differ
diff --git a/data/resources/HSK1/HSK1-2.phrases/N4.wav b/data/resources/HSK1/HSK1-2.phrases/N4.wav
new file mode 100644
index 0000000..8a9b0a0
Binary files /dev/null and b/data/resources/HSK1/HSK1-2.phrases/N4.wav differ
diff --git a/data/resources/HSK1/HSK1-2.phrases/N5.wav b/data/resources/HSK1/HSK1-2.phrases/N5.wav
new file mode 100644
index 0000000..caaf0f8
Binary files /dev/null and b/data/resources/HSK1/HSK1-2.phrases/N5.wav differ
diff --git a/data/resources/HSK1/HSK1-2.phrases/N6.wav b/data/resources/HSK1/HSK1-2.phrases/N6.wav
new file mode 100644
index 0000000..594dfa5
Binary files /dev/null and b/data/resources/HSK1/HSK1-2.phrases/N6.wav differ
diff --git a/data/resources/HSK1/HSK1-3.dictionary/中国.wav b/data/resources/HSK1/HSK1-3.dictionary/中国.wav
new file mode 100644
index 0000000..5b4cde0
Binary files /dev/null and b/data/resources/HSK1/HSK1-3.dictionary/中国.wav differ
diff --git a/data/resources/HSK1/HSK1-3.dictionary/人.wav b/data/resources/HSK1/HSK1-3.dictionary/人.wav
new file mode 100644
index 0000000..b403e39
Binary files /dev/null and b/data/resources/HSK1/HSK1-3.dictionary/人.wav differ
diff --git a/data/resources/HSK1/HSK1-3.dictionary/什么.wav b/data/resources/HSK1/HSK1-3.dictionary/什么.wav
new file mode 100644
index 0000000..87d2c48
Binary files /dev/null and b/data/resources/HSK1/HSK1-3.dictionary/什么.wav differ
diff --git a/data/resources/HSK1/HSK1-3.dictionary/叫.wav b/data/resources/HSK1/HSK1-3.dictionary/叫.wav
new file mode 100644
index 0000000..dd37617
Binary files /dev/null and b/data/resources/HSK1/HSK1-3.dictionary/叫.wav differ
diff --git a/data/resources/HSK1/HSK1-3.dictionary/名字.wav b/data/resources/HSK1/HSK1-3.dictionary/名字.wav
new file mode 100644
index 0000000..ac1a0c7
Binary files /dev/null and b/data/resources/HSK1/HSK1-3.dictionary/名字.wav differ
diff --git a/data/resources/HSK1/HSK1-3.dictionary/吗.wav b/data/resources/HSK1/HSK1-3.dictionary/吗.wav
new file mode 100644
index 0000000..667a053
Binary files /dev/null and b/data/resources/HSK1/HSK1-3.dictionary/吗.wav differ
diff --git a/data/resources/HSK1/HSK1-3.dictionary/学生.wav b/data/resources/HSK1/HSK1-3.dictionary/学生.wav
new file mode 100644
index 0000000..fd33ad9
Binary files /dev/null and b/data/resources/HSK1/HSK1-3.dictionary/学生.wav differ
diff --git a/data/resources/HSK1/HSK1-3.dictionary/我.wav b/data/resources/HSK1/HSK1-3.dictionary/我.wav
new file mode 100644
index 0000000..862dc50
Binary files /dev/null and b/data/resources/HSK1/HSK1-3.dictionary/我.wav differ
diff --git a/data/resources/HSK1/HSK1-3.dictionary/是.wav b/data/resources/HSK1/HSK1-3.dictionary/是.wav
new file mode 100644
index 0000000..2bc72d4
Binary files /dev/null and b/data/resources/HSK1/HSK1-3.dictionary/是.wav differ
diff --git a/data/resources/HSK1/HSK1-3.dictionary/美国.wav b/data/resources/HSK1/HSK1-3.dictionary/美国.wav
new file mode 100644
index 0000000..fe7c996
Binary files /dev/null and b/data/resources/HSK1/HSK1-3.dictionary/美国.wav differ
diff --git a/data/resources/HSK1/HSK1-3.dictionary/老师.wav b/data/resources/HSK1/HSK1-3.dictionary/老师.wav
new file mode 100644
index 0000000..38d0d63
Binary files /dev/null and b/data/resources/HSK1/HSK1-3.dictionary/老师.wav differ
diff --git a/data/resources/HSK1/HSK1-3.phrases/N0.wav b/data/resources/HSK1/HSK1-3.phrases/N0.wav
new file mode 100644
index 0000000..2c0d87b
Binary files /dev/null and b/data/resources/HSK1/HSK1-3.phrases/N0.wav differ
diff --git a/data/resources/HSK1/HSK1-3.phrases/N1.wav b/data/resources/HSK1/HSK1-3.phrases/N1.wav
new file mode 100644
index 0000000..b5defbd
Binary files /dev/null and b/data/resources/HSK1/HSK1-3.phrases/N1.wav differ
diff --git a/data/resources/HSK1/HSK1-3.phrases/N2.wav b/data/resources/HSK1/HSK1-3.phrases/N2.wav
new file mode 100644
index 0000000..c6cb604
Binary files /dev/null and b/data/resources/HSK1/HSK1-3.phrases/N2.wav differ
diff --git a/data/resources/HSK1/HSK1-3.phrases/N3.wav b/data/resources/HSK1/HSK1-3.phrases/N3.wav
new file mode 100644
index 0000000..b270ab5
Binary files /dev/null and b/data/resources/HSK1/HSK1-3.phrases/N3.wav differ
diff --git a/data/resources/HSK1/HSK1-3.phrases/N4.wav b/data/resources/HSK1/HSK1-3.phrases/N4.wav
new file mode 100644
index 0000000..161dd5a
Binary files /dev/null and b/data/resources/HSK1/HSK1-3.phrases/N4.wav differ
diff --git a/data/resources/HSK1/HSK1-3.phrases/N5.wav b/data/resources/HSK1/HSK1-3.phrases/N5.wav
new file mode 100644
index 0000000..17782b1
Binary files /dev/null and b/data/resources/HSK1/HSK1-3.phrases/N5.wav differ
diff --git a/data/resources/HSK1/HSK1-3.phrases/N6.wav b/data/resources/HSK1/HSK1-3.phrases/N6.wav
new file mode 100644
index 0000000..e106b0c
Binary files /dev/null and b/data/resources/HSK1/HSK1-3.phrases/N6.wav differ
diff --git a/data/resources/HSK1/HSK1-4.dictionary/他.wav b/data/resources/HSK1/HSK1-4.dictionary/他.wav
new file mode 100644
index 0000000..0cd507c
Binary files /dev/null and b/data/resources/HSK1/HSK1-4.dictionary/他.wav differ
diff --git a/data/resources/HSK1/HSK1-4.dictionary/同学.wav b/data/resources/HSK1/HSK1-4.dictionary/同学.wav
new file mode 100644
index 0000000..65d2149
Binary files /dev/null and b/data/resources/HSK1/HSK1-4.dictionary/同学.wav differ
diff --git a/data/resources/HSK1/HSK1-4.dictionary/呢.wav b/data/resources/HSK1/HSK1-4.dictionary/呢.wav
new file mode 100644
index 0000000..bd132c4
Binary files /dev/null and b/data/resources/HSK1/HSK1-4.dictionary/呢.wav differ
diff --git a/data/resources/HSK1/HSK1-4.dictionary/哪.wav b/data/resources/HSK1/HSK1-4.dictionary/哪.wav
new file mode 100644
index 0000000..34bc5e6
Binary files /dev/null and b/data/resources/HSK1/HSK1-4.dictionary/哪.wav differ
diff --git a/data/resources/HSK1/HSK1-4.dictionary/国.wav b/data/resources/HSK1/HSK1-4.dictionary/国.wav
new file mode 100644
index 0000000..122f1cc
Binary files /dev/null and b/data/resources/HSK1/HSK1-4.dictionary/国.wav differ
diff --git a/data/resources/HSK1/HSK1-4.dictionary/她.wav b/data/resources/HSK1/HSK1-4.dictionary/她.wav
new file mode 100644
index 0000000..86a7b82
Binary files /dev/null and b/data/resources/HSK1/HSK1-4.dictionary/她.wav differ
diff --git a/data/resources/HSK1/HSK1-4.dictionary/委内瑞拉.wav b/data/resources/HSK1/HSK1-4.dictionary/委内瑞拉.wav
new file mode 100644
index 0000000..796d0c0
Binary files /dev/null and b/data/resources/HSK1/HSK1-4.dictionary/委内瑞拉.wav differ
diff --git a/data/resources/HSK1/HSK1-4.dictionary/朋友.wav b/data/resources/HSK1/HSK1-4.dictionary/朋友.wav
new file mode 100644
index 0000000..7396fd7
Binary files /dev/null and b/data/resources/HSK1/HSK1-4.dictionary/朋友.wav differ
diff --git a/data/resources/HSK1/HSK1-4.dictionary/汉语.wav b/data/resources/HSK1/HSK1-4.dictionary/汉语.wav
new file mode 100644
index 0000000..e0d0aff
Binary files /dev/null and b/data/resources/HSK1/HSK1-4.dictionary/汉语.wav differ
diff --git a/data/resources/HSK1/HSK1-4.dictionary/的.wav b/data/resources/HSK1/HSK1-4.dictionary/的.wav
new file mode 100644
index 0000000..e219690
Binary files /dev/null and b/data/resources/HSK1/HSK1-4.dictionary/的.wav differ
diff --git a/data/resources/HSK1/HSK1-4.dictionary/谁.wav b/data/resources/HSK1/HSK1-4.dictionary/谁.wav
new file mode 100644
index 0000000..f1047ee
Binary files /dev/null and b/data/resources/HSK1/HSK1-4.dictionary/谁.wav differ
diff --git a/data/resources/HSK1/HSK1-4.phrases/N0.wav b/data/resources/HSK1/HSK1-4.phrases/N0.wav
new file mode 100644
index 0000000..6f9bb86
Binary files /dev/null and b/data/resources/HSK1/HSK1-4.phrases/N0.wav differ
diff --git a/data/resources/HSK1/HSK1-4.phrases/N1.wav b/data/resources/HSK1/HSK1-4.phrases/N1.wav
new file mode 100644
index 0000000..9d73d4e
Binary files /dev/null and b/data/resources/HSK1/HSK1-4.phrases/N1.wav differ
diff --git a/data/resources/HSK1/HSK1-4.phrases/N2.wav b/data/resources/HSK1/HSK1-4.phrases/N2.wav
new file mode 100644
index 0000000..4507825
Binary files /dev/null and b/data/resources/HSK1/HSK1-4.phrases/N2.wav differ
diff --git a/data/resources/HSK1/HSK1-4.phrases/N3.wav b/data/resources/HSK1/HSK1-4.phrases/N3.wav
new file mode 100644
index 0000000..d601fd5
Binary files /dev/null and b/data/resources/HSK1/HSK1-4.phrases/N3.wav differ
diff --git a/data/resources/HSK1/HSK1-4.phrases/N4.wav b/data/resources/HSK1/HSK1-4.phrases/N4.wav
new file mode 100644
index 0000000..dab7119
Binary files /dev/null and b/data/resources/HSK1/HSK1-4.phrases/N4.wav differ
diff --git a/data/resources/HSK1/HSK1-4.phrases/N5.wav b/data/resources/HSK1/HSK1-4.phrases/N5.wav
new file mode 100644
index 0000000..1403ab4
Binary files /dev/null and b/data/resources/HSK1/HSK1-4.phrases/N5.wav differ
diff --git a/data/resources/HSK1/HSK1-4.phrases/N6.wav b/data/resources/HSK1/HSK1-4.phrases/N6.wav
new file mode 100644
index 0000000..d893b56
Binary files /dev/null and b/data/resources/HSK1/HSK1-4.phrases/N6.wav differ
diff --git a/data/resources/HSK1/HSK1-4.phrases/N7.wav b/data/resources/HSK1/HSK1-4.phrases/N7.wav
new file mode 100644
index 0000000..61b716f
Binary files /dev/null and b/data/resources/HSK1/HSK1-4.phrases/N7.wav differ
diff --git a/data/resources/HSK1/HSK1-4.phrases/N8.wav b/data/resources/HSK1/HSK1-4.phrases/N8.wav
new file mode 100644
index 0000000..2ddf13f
Binary files /dev/null and b/data/resources/HSK1/HSK1-4.phrases/N8.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/亲手.wav b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/亲手.wav
new file mode 100644
index 0000000..d5b1d1e
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/亲手.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/十全十美.wav b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/十全十美.wav
new file mode 100644
index 0000000..59d44a6
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/十全十美.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/性格.wav b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/性格.wav
new file mode 100644
index 0000000..9fc8046
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/性格.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/恋爱.wav b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/恋爱.wav
new file mode 100644
index 0000000..2dd08e8
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/恋爱.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/摘.wav b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/摘.wav
new file mode 100644
index 0000000..47ffdd8
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/摘.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/支持.wav b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/支持.wav
new file mode 100644
index 0000000..1d77a7c
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/支持.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/星星.wav b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/星星.wav
new file mode 100644
index 0000000..32c2219
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/星星.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/标准.wav b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/标准.wav
new file mode 100644
index 0000000..af9edc3
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/标准.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/浪漫.wav b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/浪漫.wav
new file mode 100644
index 0000000..e850670
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/浪漫.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/温柔.wav b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/温柔.wav
new file mode 100644
index 0000000..aed47ba
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/温柔.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/理想.wav b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/理想.wav
new file mode 100644
index 0000000..8a9e7d9
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/理想.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/考虑.wav b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/考虑.wav
new file mode 100644
index 0000000..c61315c
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/考虑.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/颗.wav b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/颗.wav
new file mode 100644
index 0000000..c5e3421
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/颗.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/飞行员.wav b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/飞行员.wav
new file mode 100644
index 0000000..355a434
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.dictionary/飞行员.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N0.wav b/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N0.wav
new file mode 100644
index 0000000..3cf1f8b
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N0.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N1.wav b/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N1.wav
new file mode 100644
index 0000000..118596a
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N1.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N2.wav b/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N2.wav
new file mode 100644
index 0000000..d927296
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N2.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N3.wav b/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N3.wav
new file mode 100644
index 0000000..3c548a8
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N3.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N4.wav b/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N4.wav
new file mode 100644
index 0000000..d416fe8
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N4.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N5.wav b/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N5.wav
new file mode 100644
index 0000000..4f6a48a
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N5.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N6.wav b/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N6.wav
new file mode 100644
index 0000000..7a98fcb
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N6.wav differ
diff --git a/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N7.wav b/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N7.wav
new file mode 100644
index 0000000..d359a7d
Binary files /dev/null and b/data/resources/汉语口语新时代-初级下/第11课-1.phrases/N7.wav differ
diff --git a/setup.py b/setup.py
index 7b8f39d..1eb9581 100644
--- a/setup.py
+++ b/setup.py
@@ -12,6 +12,6 @@ setup(
"chatterbox-tts",
"torch",
"torchaudio",
- "torchcodec"
+ "torchcodec",
],
)