Yurii Paniv commited on
Commit
7927694
1 Parent(s): 86e7d18

#22 Support acute accent in text

Browse files
tests/test_stress.py CHANGED
@@ -7,6 +7,10 @@ def test_stress_table():
7
  "Бабин біб розцвів у дощ — Буде бабі біб у борщ.\n\nБоронила",
8
  "Б+абин б+іб розцв+ів +у д+ощ — Б+уде б+абі б+іб +у б+орщ.\n\nБорон+ила",
9
  ),
 
 
 
 
10
  (
11
  "Бабин біб розцвів у дощ — Буде бабі біб у борщ.,,Боронила",
12
  "Б+абин б+іб розцв+ів +у д+ощ — Б+уде б+абі б+іб +у б+орщ.,,Борон+ила",
7
  "Бабин біб розцвів у дощ — Буде бабі біб у борщ.\n\nБоронила",
8
  "Б+абин б+іб розцв+ів +у д+ощ — Б+уде б+абі б+іб +у б+орщ.\n\nБорон+ила",
9
  ),
10
+ (
11
+ "Баби\u0301н біб розцвів.",
12
+ "Баб+ин б+іб розцв+ів.",
13
+ ), # handle acute accent
14
  (
15
  "Бабин біб розцвів у дощ — Буде бабі біб у борщ.,,Боронила",
16
  "Б+абин б+іб розцв+ів +у д+ощ — Б+уде б+абі б+іб +у б+орщ.,,Борон+ила",
ukrainian_tts/formatter.py CHANGED
@@ -92,7 +92,7 @@ def preprocess_text(text):
92
  "y": "і",
93
  "z": "з",
94
  }
95
- for english_char, english_value in english.keys():
96
  # uppercase
97
  text = text.replace(english_char.upper(), english_value.upper())
98
  text = text.replace(english_char, english_value)
92
  "y": "і",
93
  "z": "з",
94
  }
95
+ for english_char, english_value in english.items():
96
  # uppercase
97
  text = text.replace(english_char.upper(), english_value.upper())
98
  text = text.replace(english_char, english_value)
ukrainian_tts/stress.py CHANGED
@@ -10,17 +10,19 @@ special = "'-"
10
  alphabet = vowels + consonants + special + "+"
11
 
12
 
13
- def _shift_stress(stressed):
14
  new_stressed = ""
15
  start = 0
16
  last = 0
17
 
18
  # shift stress symbol by one "при+віт" -> "пр+ивіт"
19
  while True:
20
- plus_position = stressed.find("+", start)
21
  if plus_position != -1:
22
  new_stressed += (
23
- stressed[last : plus_position - 1] + "+" + stressed[plus_position - 1]
 
 
24
  )
25
  start = plus_position + 1
26
  last = start
@@ -44,6 +46,10 @@ def stress_dict(sentence: str):
44
 
45
 
46
  def sentence_to_stress(sentence: str, stress_function=stress_dict) -> str:
 
 
 
 
47
  # save custom stress positions
48
  all_stresses = []
49
  orig_words = sentence.split(" ")
10
  alphabet = vowels + consonants + special + "+"
11
 
12
 
13
+ def _shift_stress(stressed, symboll_to_shift="+"):
14
  new_stressed = ""
15
  start = 0
16
  last = 0
17
 
18
  # shift stress symbol by one "при+віт" -> "пр+ивіт"
19
  while True:
20
+ plus_position = stressed.find(symboll_to_shift, start)
21
  if plus_position != -1:
22
  new_stressed += (
23
+ stressed[last : plus_position - 1]
24
+ + symboll_to_shift
25
+ + stressed[plus_position - 1]
26
  )
27
  start = plus_position + 1
28
  last = start
46
 
47
 
48
  def sentence_to_stress(sentence: str, stress_function=stress_dict) -> str:
49
+ # replace acute accent with plus
50
+ sentence = _shift_stress(sentence, "́")
51
+ sentence = sentence.replace("́", "+")
52
+
53
  # save custom stress positions
54
  all_stresses = []
55
  orig_words = sentence.split(" ")