mrfakename commited on
Commit
00d7521
Β·
verified Β·
1 Parent(s): 490128a

Sync from GitHub repo

Browse files

This Space is synced from the GitHub repo: https://github.com/SWivid/F5-TTS. Please submit contributions to the Space there

src/f5_tts/infer/utils_infer.py CHANGED
@@ -346,7 +346,7 @@ def preprocess_ref_audio_text(ref_audio_orig, ref_text, clip_short=True, show_in
346
  else:
347
  ref_text += ". "
348
 
349
- print("ref_text ", ref_text)
350
 
351
  return ref_audio, ref_text
352
 
@@ -378,6 +378,7 @@ def infer_process(
378
  gen_text_batches = chunk_text(gen_text, max_chars=max_chars)
379
  for i, gen_text in enumerate(gen_text_batches):
380
  print(f"gen_text {i}", gen_text)
 
381
 
382
  show_info(f"Generating audio in {len(gen_text_batches)} batches...")
383
  return infer_batch_process(
 
346
  else:
347
  ref_text += ". "
348
 
349
+ print("\nref_text ", ref_text)
350
 
351
  return ref_audio, ref_text
352
 
 
378
  gen_text_batches = chunk_text(gen_text, max_chars=max_chars)
379
  for i, gen_text in enumerate(gen_text_batches):
380
  print(f"gen_text {i}", gen_text)
381
+ print("\n")
382
 
383
  show_info(f"Generating audio in {len(gen_text_batches)} batches...")
384
  return infer_batch_process(
src/f5_tts/model/utils.py CHANGED
@@ -133,16 +133,23 @@ def get_tokenizer(dataset_name, tokenizer: str = "pinyin"):
133
 
134
  # convert char to pinyin
135
 
 
 
 
136
 
137
  def convert_char_to_pinyin(text_list, polyphone=True):
138
  final_text_list = []
139
- god_knows_why_en_testset_contains_zh_quote = str.maketrans(
140
- {"β€œ": '"', "”": '"', "β€˜": "'", "’": "'"}
141
- ) # in case librispeech (orig no-pc) test-clean
142
- custom_trans = str.maketrans({";": ","}) # add custom trans here, to address oov
 
 
 
 
 
143
  for text in text_list:
144
  char_list = []
145
- text = text.translate(god_knows_why_en_testset_contains_zh_quote)
146
  text = text.translate(custom_trans)
147
  for seg in jieba.cut(text):
148
  seg_byte_len = len(bytes(seg, "UTF-8"))
@@ -150,22 +157,21 @@ def convert_char_to_pinyin(text_list, polyphone=True):
150
  if char_list and seg_byte_len > 1 and char_list[-1] not in " :'\"":
151
  char_list.append(" ")
152
  char_list.extend(seg)
153
- elif polyphone and seg_byte_len == 3 * len(seg): # if pure chinese characters
154
- seg = lazy_pinyin(seg, style=Style.TONE3, tone_sandhi=True)
155
- for c in seg:
156
- if c not in "γ€‚οΌŒγ€οΌ›οΌšοΌŸοΌγ€Šγ€‹γ€γ€‘β€”β€¦":
157
  char_list.append(" ")
158
- char_list.append(c)
159
- else: # if mixed chinese characters, alphabets and symbols
160
  for c in seg:
161
  if ord(c) < 256:
162
  char_list.extend(c)
 
 
 
163
  else:
164
- if c not in "γ€‚οΌŒγ€οΌ›οΌšοΌŸοΌγ€Šγ€‹γ€γ€‘β€”β€¦":
165
- char_list.append(" ")
166
- char_list.extend(lazy_pinyin(c, style=Style.TONE3, tone_sandhi=True))
167
- else: # if is zh punc
168
- char_list.append(c)
169
  final_text_list.append(char_list)
170
 
171
  return final_text_list
 
133
 
134
  # convert char to pinyin
135
 
136
+ jieba.initialize()
137
+ print("Word segmentation module jieba initialized.\n")
138
+
139
 
140
  def convert_char_to_pinyin(text_list, polyphone=True):
141
  final_text_list = []
142
+ custom_trans = str.maketrans(
143
+ {";": ",", "β€œ": '"', "”": '"', "β€˜": "'", "’": "'"}
144
+ ) # add custom trans here, to address oov
145
+
146
+ def is_chinese(c):
147
+ return (
148
+ "\u3100" <= c <= "\u9fff" # common chinese characters
149
+ )
150
+
151
  for text in text_list:
152
  char_list = []
 
153
  text = text.translate(custom_trans)
154
  for seg in jieba.cut(text):
155
  seg_byte_len = len(bytes(seg, "UTF-8"))
 
157
  if char_list and seg_byte_len > 1 and char_list[-1] not in " :'\"":
158
  char_list.append(" ")
159
  char_list.extend(seg)
160
+ elif polyphone and seg_byte_len == 3 * len(seg): # if pure east asian characters
161
+ seg_ = lazy_pinyin(seg, style=Style.TONE3, tone_sandhi=True)
162
+ for i, c in enumerate(seg):
163
+ if is_chinese(c):
164
  char_list.append(" ")
165
+ char_list.append(seg_[i])
166
+ else: # if mixed characters, alphabets and symbols
167
  for c in seg:
168
  if ord(c) < 256:
169
  char_list.extend(c)
170
+ elif is_chinese(c):
171
+ char_list.append(" ")
172
+ char_list.extend(lazy_pinyin(c, style=Style.TONE3, tone_sandhi=True))
173
  else:
174
+ char_list.append(c)
 
 
 
 
175
  final_text_list.append(char_list)
176
 
177
  return final_text_list