voxbi 0.3.0 → 1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (270) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -2
  3. data/bin/voxbi +3 -2
  4. data/data/{paires_disponibles.csv → available_pairs.csv} +1 -0
  5. data/data/conversion.csv +10 -10
  6. data/data/{phono.json → dictionary.json} +1 -1
  7. data/data/exceptions.csv +1 -0
  8. data/data/{liaisons.csv → linkage.csv} +0 -0
  9. data/data/pairs.wav +0 -0
  10. data/data/{paires → pairs}/_.ogg +0 -0
  11. data/data/{paires → pairs}/a.ogg +0 -0
  12. data/data/pairs/b.ogg +0 -0
  13. data/data/{paires → pairs}/ba-old1.ogg +0 -0
  14. data/data/{paires → pairs}/ba.ogg +0 -0
  15. data/data/{paires → pairs}/be.ogg +0 -0
  16. data/data/{paires → pairs}/bi-old1.ogg +0 -0
  17. data/data/{paires → pairs}/bi.ogg +0 -0
  18. data/data/{paires → pairs}/bibi.ogg +0 -0
  19. data/data/{paires → pairs}/bo.ogg +0 -0
  20. data/data/{paires → pairs}/bu.ogg +0 -0
  21. data/data/{paires → pairs}/by.ogg +0 -0
  22. data/data/{paires → pairs}/b/305/223.ogg +0 -0
  23. data/data/{paires → pairs}/b/311/224.ogg +0 -0
  24. data/data/{paires → pairs}/b/316/261.ogg +0 -0
  25. data/data/{paires → pairs}/b/317/203.ogg +0 -0
  26. data/data/{paires → pairs}/b/317/265.ogg +0 -0
  27. data/data/{paires → pairs}/d.ogg +0 -0
  28. data/data/{paires → pairs}/da.ogg +0 -0
  29. data/data/{paires → pairs}/de.ogg +0 -0
  30. data/data/{paires → pairs}/di.ogg +0 -0
  31. data/data/{paires → pairs}/do.ogg +0 -0
  32. data/data/{paires → pairs}/du.ogg +0 -0
  33. data/data/{paires → pairs}/dy.ogg +0 -0
  34. data/data/{paires → pairs}/d/303/270.ogg +0 -0
  35. data/data/{paires → pairs}/d/305/223.ogg +0 -0
  36. data/data/{paires → pairs}/d/311/224.ogg +0 -0
  37. data/data/{paires → pairs}/d/316/261.ogg +0 -0
  38. data/data/{paires → pairs}/d/317/203.ogg +0 -0
  39. data/data/pairs/d/317/265.ogg +0 -0
  40. data/data/{paires → pairs}/e.ogg +0 -0
  41. data/data/{paires → pairs}/error.ogg +0 -0
  42. data/data/{paires → pairs}/f.ogg +0 -0
  43. data/data/{paires → pairs}/fa.ogg +0 -0
  44. data/data/{paires → pairs}/fe.ogg +0 -0
  45. data/data/{paires → pairs}/fi.ogg +0 -0
  46. data/data/{paires → pairs}/fo.ogg +0 -0
  47. data/data/{paires → pairs}/fu.ogg +0 -0
  48. data/data/{paires → pairs}/fy.ogg +0 -0
  49. data/data/{paires → pairs}/f/303/270.ogg +0 -0
  50. data/data/{paires → pairs}/f/305/223.ogg +0 -0
  51. data/data/{paires → pairs}/f/311/224.ogg +0 -0
  52. data/data/{paires → pairs}/f/311/233.ogg +0 -0
  53. data/data/{paires → pairs}/f/316/261.ogg +0 -0
  54. data/data/{paires → pairs}/f/317/203.ogg +0 -0
  55. data/data/{paires → pairs}/f/317/265.ogg +0 -0
  56. data/data/{paires → pairs}/g.ogg +0 -0
  57. data/data/{paires → pairs}/ga.ogg +0 -0
  58. data/data/{paires → pairs}/ge.ogg +0 -0
  59. data/data/{paires → pairs}/gi.ogg +0 -0
  60. data/data/{paires → pairs}/go.ogg +0 -0
  61. data/data/{paires → pairs}/gu.ogg +0 -0
  62. data/data/{paires → pairs}/gy.ogg +0 -0
  63. data/data/{paires → pairs}/g/305/223.ogg +0 -0
  64. data/data/{paires → pairs}/g/311/224.ogg +0 -0
  65. data/data/{paires → pairs}/g/311/233.ogg +0 -0
  66. data/data/{paires → pairs}/g/317/203.ogg +0 -0
  67. data/data/{paires → pairs}/i.ogg +0 -0
  68. data/data/{paires → pairs}/il.ogg +0 -0
  69. data/data/{paires → pairs}/j.ogg +0 -0
  70. data/data/{paires → pairs}/je.ogg +0 -0
  71. data/data/{paires → pairs}/jo.ogg +0 -0
  72. data/data/{paires → pairs}/ju.ogg +0 -0
  73. data/data/{paires → pairs}/j/303/270.ogg +0 -0
  74. data/data/{paires → pairs}/j/311/224.ogg +0 -0
  75. data/data/{paires → pairs}/j/311/233.ogg +0 -0
  76. data/data/{paires → pairs}/j/316/261.ogg +0 -0
  77. data/data/{paires → pairs}/j/317/203.ogg +0 -0
  78. data/data/{paires → pairs}/j/317/265.ogg +0 -0
  79. data/data/{paires → pairs}/k.ogg +0 -0
  80. data/data/{paires → pairs}/ka.ogg +0 -0
  81. data/data/{paires → pairs}/ka.oggpaires.wav +0 -0
  82. data/data/{paires → pairs}/ke.ogg +0 -0
  83. data/data/{paires → pairs}/ki.ogg +0 -0
  84. data/data/{paires → pairs}/ko.ogg +0 -0
  85. data/data/{paires → pairs}/ku.ogg +0 -0
  86. data/data/{paires → pairs}/ky.ogg +0 -0
  87. data/data/{paires → pairs}/k/303/270.ogg +0 -0
  88. data/data/{paires → pairs}/k/305/223.ogg +0 -0
  89. data/data/{paires → pairs}/k/311/224.ogg +0 -0
  90. data/data/{paires → pairs}/k/311/233.ogg +0 -0
  91. data/data/{paires → pairs}/k/316/261.ogg +0 -0
  92. data/data/{paires → pairs}/k/317/200.ogg +0 -0
  93. data/data/{paires → pairs}/k/317/203.ogg +0 -0
  94. data/data/{paires → pairs}/k/317/265.ogg +0 -0
  95. data/data/{paires → pairs}/l.ogg +0 -0
  96. data/data/{paires → pairs}/la.ogg +0 -0
  97. data/data/{paires → pairs}/le.ogg +0 -0
  98. data/data/{paires → pairs}/li.ogg +0 -0
  99. data/data/{paires → pairs}/lo.ogg +0 -0
  100. data/data/{paires → pairs}/lu.ogg +0 -0
  101. data/data/{paires → pairs}/ly.ogg +0 -0
  102. data/data/{paires → pairs}/l/303/270.ogg +0 -0
  103. data/data/{paires → pairs}/l/305/223.ogg +0 -0
  104. data/data/{paires → pairs}/l/311/224.ogg +0 -0
  105. data/data/{paires → pairs}/l/311/233.ogg +0 -0
  106. data/data/{paires → pairs}/l/316/261.ogg +0 -0
  107. data/data/{paires → pairs}/l/317/203.ogg +0 -0
  108. data/data/{paires → pairs}/l/317/265.ogg +0 -0
  109. data/data/{paires → pairs}/m.ogg +0 -0
  110. data/data/{paires → pairs}/ma.ogg +0 -0
  111. data/data/{paires → pairs}/me.ogg +0 -0
  112. data/data/{paires → pairs}/mi.ogg +0 -0
  113. data/data/{paires → pairs}/mo.ogg +0 -0
  114. data/data/{paires → pairs}/mu.ogg +0 -0
  115. data/data/{paires → pairs}/my.ogg +0 -0
  116. data/data/{paires → pairs}/m/305/223.ogg +0 -0
  117. data/data/{paires → pairs}/m/311/224.ogg +0 -0
  118. data/data/{paires → pairs}/m/311/233.ogg +0 -0
  119. data/data/{paires → pairs}/m/316/261.ogg +0 -0
  120. data/data/{paires → pairs}/m/317/203.ogg +0 -0
  121. data/data/{paires → pairs}/m/317/265.ogg +0 -0
  122. data/data/{paires → pairs}/n(old).ogg +0 -0
  123. data/data/{paires → pairs}/n.ogg +0 -0
  124. data/data/{paires → pairs}/na.ogg +0 -0
  125. data/data/{paires → pairs}/ne.ogg +0 -0
  126. data/data/{paires → pairs}/ni.ogg +0 -0
  127. data/data/{paires → pairs}/nu.ogg +0 -0
  128. data/data/{paires → pairs}/ny.ogg +0 -0
  129. data/data/{paires → pairs}/n/305/223.ogg +0 -0
  130. data/data/{paires → pairs}/n/311/224.ogg +0 -0
  131. data/data/{paires → pairs}/n/311/233.ogg +0 -0
  132. data/data/{paires → pairs}/n/316/261.ogg +0 -0
  133. data/data/{paires → pairs}/n/317/203.ogg +0 -0
  134. data/data/{paires → pairs}/n/317/265.ogg +0 -0
  135. data/data/{paires → pairs}/o.ogg +0 -0
  136. data/data/{paires → pairs}/out.ogg +0 -0
  137. data/data/{paires → pairs}/p.ogg +0 -0
  138. data/data/{paires → pairs}/pa.ogg +0 -0
  139. data/data/{paires → pairs}/pe.ogg +0 -0
  140. data/data/{paires → pairs}/phoque.ogg +0 -0
  141. data/data/{paires → pairs}/pi.ogg +0 -0
  142. data/data/{paires → pairs}/po.ogg +0 -0
  143. data/data/{paires → pairs}/pu.ogg +0 -0
  144. data/data/{paires → pairs}/py.ogg +0 -0
  145. data/data/{paires → pairs}/p/303/270.ogg +0 -0
  146. data/data/{paires → pairs}/p/305/223.ogg +0 -0
  147. data/data/{paires → pairs}/p/311/224.ogg +0 -0
  148. data/data/{paires → pairs}/p/311/233.ogg +0 -0
  149. data/data/{paires → pairs}/p/316/261.ogg +0 -0
  150. data/data/{paires → pairs}/p/317/203.ogg +0 -0
  151. data/data/{paires → pairs}/p/317/265.ogg +0 -0
  152. data/data/{paires → pairs}/r.ogg +0 -0
  153. data/data/{paires → pairs}/ra.ogg +0 -0
  154. data/data/{paires → pairs}/re.ogg +0 -0
  155. data/data/{paires → pairs}/ri.ogg +0 -0
  156. data/data/{paires → pairs}/ro.ogg +0 -0
  157. data/data/{paires → pairs}/ru.ogg +0 -0
  158. data/data/{paires → pairs}/ry.ogg +0 -0
  159. data/data/{paires → pairs}/r/305/223.ogg +0 -0
  160. data/data/{paires → pairs}/r/311/224.ogg +0 -0
  161. data/data/{paires → pairs}/r/311/233.ogg +0 -0
  162. data/data/{paires → pairs}/r/316/261.ogg +0 -0
  163. data/data/{paires → pairs}/r/317/203.ogg +0 -0
  164. data/data/{paires → pairs}/r/317/265.ogg +0 -0
  165. data/data/{paires → pairs}/s.ogg +0 -0
  166. data/data/{paires → pairs}/sa.ogg +0 -0
  167. data/data/{paires → pairs}/se.ogg +0 -0
  168. data/data/{paires → pairs}/si.ogg +0 -0
  169. data/data/{paires → pairs}/so.ogg +0 -0
  170. data/data/{paires → pairs}/su.ogg +0 -0
  171. data/data/{paires → pairs}/sy.ogg +0 -0
  172. data/data/{paires → pairs}/s/305/223.ogg +0 -0
  173. data/data/{paires → pairs}/s/311/224.ogg +0 -0
  174. data/data/{paires → pairs}/s/311/233.ogg +0 -0
  175. data/data/{paires → pairs}/s/316/261.ogg +0 -0
  176. data/data/{paires → pairs}/s/317/203.ogg +0 -0
  177. data/data/{paires → pairs}/s/317/265.ogg +0 -0
  178. data/data/{paires → pairs}/t.ogg +0 -0
  179. data/data/{paires → pairs}/ta.ogg +0 -0
  180. data/data/{paires → pairs}/te.ogg +0 -0
  181. data/data/{paires → pairs}/ti.ogg +0 -0
  182. data/data/{paires → pairs}/to.ogg +0 -0
  183. data/data/{paires → pairs}/tu.ogg +0 -0
  184. data/data/{paires → pairs}/ty.ogg +0 -0
  185. data/data/{paires → pairs}/t/303/270.ogg +0 -0
  186. data/data/{paires → pairs}/t/305/223.ogg +0 -0
  187. data/data/{paires → pairs}/t/311/224.ogg +0 -0
  188. data/data/{paires → pairs}/t/311/233.ogg +0 -0
  189. data/data/{paires → pairs}/t/316/261.ogg +0 -0
  190. data/data/{paires → pairs}/t/317/203.ogg +0 -0
  191. data/data/{paires → pairs}/t/317/265.ogg +0 -0
  192. data/data/{paires → pairs}/u.ogg +0 -0
  193. data/data/{paires → pairs}/v.ogg +0 -0
  194. data/data/{paires → pairs}/va.ogg +0 -0
  195. data/data/{paires → pairs}/ve.ogg +0 -0
  196. data/data/{paires → pairs}/vi.ogg +0 -0
  197. data/data/{paires → pairs}/vo.ogg +0 -0
  198. data/data/{paires → pairs}/vu.ogg +0 -0
  199. data/data/{paires → pairs}/vy.ogg +0 -0
  200. data/data/{paires → pairs}/v/303/270.ogg +0 -0
  201. data/data/{paires → pairs}/v/305/223.ogg +0 -0
  202. data/data/{paires → pairs}/v/311/224.ogg +0 -0
  203. data/data/{paires → pairs}/v/311/233.ogg +0 -0
  204. data/data/{paires → pairs}/v/316/261.ogg +0 -0
  205. data/data/{paires → pairs}/v/317/203.ogg +0 -0
  206. data/data/{paires → pairs}/v/317/265.ogg +0 -0
  207. data/data/{paires → pairs}/w.ogg +0 -0
  208. data/data/{paires → pairs}/wa.ogg +0 -0
  209. data/data/{paires → pairs}/we.ogg +0 -0
  210. data/data/{paires → pairs}/wi.ogg +0 -0
  211. data/data/{paires → pairs}/w/311/233.ogg +0 -0
  212. data/data/{paires → pairs}/w/316/261.ogg +0 -0
  213. data/data/{paires → pairs}/w/317/203.ogg +0 -0
  214. data/data/{paires → pairs}/w/317/265.ogg +0 -0
  215. data/data/{paires → pairs}/y.ogg +0 -0
  216. data/data/{paires → pairs}/z.ogg +0 -0
  217. data/data/{paires → pairs}/za.ogg +0 -0
  218. data/data/{paires → pairs}/ze.ogg +0 -0
  219. data/data/{paires → pairs}/zi.ogg +0 -0
  220. data/data/{paires → pairs}/zo.ogg +0 -0
  221. data/data/{paires → pairs}/zu.ogg +0 -0
  222. data/data/{paires → pairs}/zy.ogg +0 -0
  223. data/data/{paires → pairs}/z/311/224.ogg +0 -0
  224. data/data/{paires → pairs}/z/311/233.ogg +0 -0
  225. data/data/{paires → pairs}/z/316/261.ogg +0 -0
  226. data/data/{paires → pairs}/z/317/203.ogg +0 -0
  227. data/data/{paires → pairs}/z/317/265.ogg +0 -0
  228. data/data/{paires → pairs}//302/265.ogg +0 -0
  229. data/data/{paires → pairs}//302/265i.ogg +0 -0
  230. data/data/{paires → pairs}//303/270.ogg +0 -0
  231. data/data/{paires → pairs}//305/223.ogg +0 -0
  232. data/data/{paires → pairs}//311/224.ogg +0 -0
  233. data/data/{paires → pairs}//311/233.ogg +0 -0
  234. data/data/{paires → pairs}//311/262.ogg +0 -0
  235. data/data/{paires → pairs}//312/203.ogg +0 -0
  236. data/data/{paires → pairs}//312/203a.ogg +0 -0
  237. data/data/{paires → pairs}//312/203e.ogg +0 -0
  238. data/data/{paires → pairs}//312/203i.ogg +0 -0
  239. data/data/{paires → pairs}//312/203o.ogg +0 -0
  240. data/data/{paires → pairs}//312/203u.ogg +0 -0
  241. data/data/{paires → pairs}//312/203/311/233.ogg +0 -0
  242. data/data/{paires → pairs}//312/203/316/261.ogg +0 -0
  243. data/data/{paires → pairs}//312/222.ogg +0 -0
  244. data/data/{paires → pairs}//312/222a.ogg +0 -0
  245. data/data/{paires → pairs}//312/222e.ogg +0 -0
  246. data/data/{paires → pairs}//312/222i.ogg +0 -0
  247. data/data/{paires → pairs}//312/222o.ogg +0 -0
  248. data/data/{paires → pairs}//312/222u.ogg +0 -0
  249. data/data/{paires → pairs}//312/222y.ogg +0 -0
  250. data/data/{paires → pairs}//312/222/303/270.ogg +0 -0
  251. data/data/{paires → pairs}//312/222/305/223.ogg +0 -0
  252. data/data/{paires → pairs}//312/222/311/224.ogg +0 -0
  253. data/data/{paires → pairs}//312/222/311/233.ogg +0 -0
  254. data/data/{paires → pairs}//312/222/316/261.ogg +0 -0
  255. data/data/{paires → pairs}//316/261.ogg +0 -0
  256. data/data/{paires → pairs}//317/200.ogg +0 -0
  257. data/data/{paires → pairs}//317/203.ogg +0 -0
  258. data/data/{paires → pairs}//317/265.ogg +0 -0
  259. data/lib/extensions/string.rb +7 -0
  260. data/lib/modules/rulable.rb +47 -0
  261. data/lib/services/get_pairs_service.rb +29 -0
  262. data/lib/services/get_syllables_service.rb +43 -0
  263. data/lib/services/linkage_service.rb +40 -0
  264. data/lib/services/phonetics_converter_service.rb +42 -0
  265. data/lib/services/prepare_text_service.rb +49 -0
  266. data/lib/voxbi.rb +40 -87
  267. data/voxbi.gemspec +12 -12
  268. metadata +288 -266
  269. data/data/paires/b.ogg +0 -0
  270. data/lib/special_chars.rb +0 -1
@@ -0,0 +1,40 @@
1
+ class LinkageService
2
+ include Rulable
3
+
4
+ attr_accessor :prepared_text, :phonetic_text
5
+
6
+ def initialize(prepared_text, phonetic_text)
7
+ @prepared_text = prepared_text
8
+ @phonetic_text = phonetic_text
9
+ end
10
+
11
+ def call
12
+ dup_phonetic_text
13
+ apply_linkage
14
+
15
+ @dup_phonetic_text
16
+ end
17
+
18
+ private
19
+
20
+ def dup_phonetic_text
21
+ @dup_phonetic_text ||= phonetic_text.dup
22
+ end
23
+
24
+ def apply_linkage
25
+ prepared_text.each_with_index do |word, index|
26
+ if @dup_phonetic_text[index+1]
27
+ link_string = word[-1] + @dup_phonetic_text[index+1][0]
28
+ linkage_rule = linkage_rule_for(link_string)
29
+
30
+ if linkage_rule
31
+ @dup_phonetic_text[index+1] = linkage_rule[1].to_s + @dup_phonetic_text[index+1]
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ def linkage_rule_for(link_string)
38
+ linkage.select {|k,v| link_string =~ /#{k}/ }.first
39
+ end
40
+ end
@@ -0,0 +1,42 @@
1
+ require "timeout"
2
+
3
+ class PhoneticsConverterService
4
+ include Rulable
5
+
6
+ DEFAULT_TIMEOUT = 5.freeze
7
+
8
+ attr_accessor :word, :phonetized_word
9
+
10
+ def initialize(word)
11
+ @word = word
12
+ @phonetized_word = ''
13
+ end
14
+
15
+ def call
16
+ with_timeout { phonetize_word }
17
+ phonetized_word
18
+ end
19
+
20
+ private
21
+
22
+ def with_timeout(&block)
23
+ Timeout::timeout(DEFAULT_TIMEOUT) do
24
+ block.call
25
+ end
26
+ end
27
+
28
+ def phonetize_word
29
+ dup_word = word.dup
30
+
31
+ until dup_word.empty?
32
+ conversion_rule_for(dup_word).tap do |rule, phonetic|
33
+ dup_word.sub! /#{rule}/, ''
34
+ phonetized_word << phonetic.to_s
35
+ end
36
+ end
37
+ end
38
+
39
+ def conversion_rule_for(word)
40
+ conversion.detect{ |rule, phonetic| word =~ /#{rule}/ }
41
+ end
42
+ end
@@ -0,0 +1,49 @@
1
+ require "numbers_and_words"
2
+
3
+ class PrepareTextService
4
+ SPECIAL_CHARACTERS = /([•|—|–|\-|\’|,|?|!|^|\r|°|“|”|...|\u00a0|«|»|…|\\|\/|!|?|\"|\'|\[|\]|\(|\)|\]|<|>|=|+|%|$|&|#|;|*|:|}|{|`])/.freeze
5
+
6
+ attr_accessor :text, :prepared_text
7
+
8
+ def initialize(text)
9
+ @text = text
10
+ @prepared_text = text.dup
11
+ end
12
+
13
+ def call
14
+ downcase_text!
15
+ remove_special_characters!
16
+ split_text!
17
+ wordify_numbers!
18
+
19
+ prepared_text
20
+ end
21
+
22
+ private
23
+
24
+ def downcase_text!
25
+ @prepared_text.downcase!
26
+ end
27
+
28
+ def split_text!
29
+ @prepared_text = @prepared_text.split
30
+ end
31
+
32
+ def remove_special_characters!
33
+ prepared_text.gsub!(SPECIAL_CHARACTERS, "")
34
+ end
35
+
36
+ # Other service ?
37
+
38
+ def wordify_numbers!
39
+ prepared_text.map! do |word|
40
+ word.to_i != 0 ? word_for(word.to_i) : word
41
+ end.flatten!
42
+ end
43
+
44
+ def word_for(number)
45
+ I18n.with_locale(:fr) do
46
+ number.to_words.gsub("-"," ").split
47
+ end
48
+ end
49
+ end
data/lib/voxbi.rb CHANGED
@@ -1,103 +1,56 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "json"
4
- require "numbers_and_words"
3
+ require "require_all"
4
+ require_all "lib/**/*.rb"
5
5
 
6
- module Voxbi
6
+ ROOT_PATH = File.expand_path('..', __dir__).freeze
7
+ DATA_PATH = "#{ROOT_PATH}/data".freeze
8
+ DEFAULT_OUTPUT_FILENAME = 'pairs'
9
+ DEFAULT_OUTPUT_PATH = "#{DATA_PATH}/#{DEFAULT_OUTPUT_FILENAME}.wav".freeze
7
10
 
8
- ROOT = File.expand_path("../..", __FILE__)
9
- @output_path = "#{ROOT}/data/paires.wav"
10
- eval(File.read("#{ROOT}/lib/special_chars.rb"))
11
+ class Voxbi
12
+ include Rulable
11
13
 
12
- def Voxbi.parseCSV(path)
13
- Hash[File.open("#{ROOT}/data/#{path}.csv").read.split("\n").map {|ligne| ligne.split("#")}]
14
- end
14
+ attr_accessor :text
15
15
 
16
- def Voxbi.dict
17
- @dict ||= JSON.parse(File.read("#{ROOT}/data/phono.json"))
18
- end
16
+ def initialize(text)
17
+ @text = text
18
+ end
19
19
 
20
- def Voxbi.exceptions
21
- @exceptions ||= parseCSV "exceptions"
22
- end
20
+ def read
21
+ file_paths = normalized_pairs.map{ |pair| "#{DATA_PATH}/pairs/#{pair}.ogg" }
22
+ `sox #{file_paths.join(" ")} #{DEFAULT_OUTPUT_PATH}`
23
+ `aplay #{DEFAULT_OUTPUT_PATH}`
24
+ end
23
25
 
24
- def Voxbi.conversion
25
- @conversion ||= parseCSV "conversion"
26
- end
26
+ def get_pairs
27
+ GetPairsService.new(linked_phonems).call
28
+ end
27
29
 
28
- def Voxbi.liaisons
29
- @liaisons ||= parseCSV "liaisons"
30
- end
30
+ def get_syllables
31
+ GetSyllablesService.new(linked_phonems).call
32
+ end
31
33
 
32
- def Voxbi.set_output_path(p)
33
- @output_path = p
34
- end
34
+ private
35
35
 
36
- def Voxbi.output_path
37
- @output_path
38
- end
39
-
40
- def Voxbi.apply_exceptions
41
- exceptions.each {|k,v| dict[k] = v}
42
- end
36
+ def normalized_pairs
37
+ get_pairs.map{ |pairs| pairs << '_' }.flatten
38
+ end
43
39
 
44
- def Voxbi.clean(texte)
45
- new_text = texte.downcase.gsub(SPE, "").split
46
- new_text.map! do |word|
47
- if word.to_i != 0
48
- I18n.with_locale(:fr) { word.to_i.to_words.gsub("-"," ").split}
49
- else
50
- word
51
- end
52
- end
53
- return new_text.flatten
54
- end
40
+ def prepared_text
41
+ @prepared_text ||= PrepareTextService.new(text).call
42
+ end
55
43
 
56
- def Voxbi.apimatch(texte)
57
- apply_exceptions
58
- graphie = clean(texte)
59
- clean_text = clean(texte)
60
- phono = clean_text.map do |mot|
61
- dict[mot] || "".tap do |result|
62
- conversion.select { |regle| mot =~ /#{regle}/ }.first.tap do |regle, api|
63
- mot.sub! /#{regle}/, ""
64
- result << api.to_s
65
- end until mot.empty?
66
- end
67
- end
68
- return liaison(graphie,phono)
69
- end
44
+ def phonetic_text
45
+ @phonetic_text ||= prepared_text.map do |word|
46
+ dictionary[word] ||
47
+ PhoneticsConverterService.new(word).call
48
+ end
49
+ end
70
50
 
71
- def Voxbi.liaison(texte,phono)
72
- texte.each_with_index do |mot,id|
73
- if phono[id+1]
74
- lien = mot[-1] + phono[id+1][0]
75
- match = liaisons.select {|k,v| lien =~ /#{k}/ }.first
76
- match ? phono[id+1] = match[1].to_s + phono[id+1] : next
77
- end
78
- end
79
- return phono
80
- end
81
-
82
-
83
-
84
- def Voxbi.voxbi(texte)
85
- paires_dispo = File.open("#{ROOT}/data/paires_disponibles.csv").read.split("\n")
86
- api = apimatch(texte).join "_"
87
- puts api.inspect
88
- fichiers = []
89
- while api.length !=0
90
- paires_dispo.each do |paires|
91
- if api.match(/^#{paires}/)
92
- fichiers << "#{ROOT}/data/paires/#{paires}.ogg"
93
- api = api.sub(/^#{paires}/,"")
94
- break
95
- end
96
- end
97
- end
98
- `sox #{fichiers.join(" ")} #{output_path}`
99
- `aplay #{output_path}`
100
- end
51
+ def linked_phonems
52
+ LinkageService.new(prepared_text, phonetic_text).call
53
+ end
54
+ end
101
55
 
102
56
 
103
- end
data/voxbi.gemspec CHANGED
@@ -1,17 +1,17 @@
1
1
  Gem::Specification.new do |s|
2
- s.name = 'voxbi'
3
- s.version = '0.3.0'
4
- s.date = '2013-09-22'
5
- s.summary = "VoxBi"
6
- s.description = "Easy-to-use french voice synthesizer"
7
- s.authors = ["Galaad Gauthier"]
8
- s.email = 'coontail7@gmail.com'
9
- s.files = Dir['**/*']
10
- s.executables = ["voxbi"]
11
- s.require_path = 'lib'
12
- s.homepage =
13
- 'https://github.com/Galaad-Gauthier/VoxBi'
2
+ s.name = 'voxbi'
3
+ s.version = '1.0'
4
+ s.date = '2018-04-03'
5
+ s.summary = "VoxBi"
6
+ s.description = "Easy-to-use french voice synthesizer"
7
+ s.authors = ["Galaad Gauthier"]
8
+ s.email = 'coontail7@gmail.com'
9
+ s.files = Dir['**/*']
10
+ s.executables = ["voxbi"]
11
+ s.require_path = 'lib'
12
+ s.homepage = 'https://github.com/Galaad-Gauthier/VoxBi'
14
13
  s.license = 'MIT'
15
14
  s.add_dependency "json"
16
15
  s.add_dependency "numbers_and_words"
16
+ s.add_dependency "require_all"
17
17
  end
metadata CHANGED
@@ -1,41 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: voxbi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: '1.0'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Galaad Gauthier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-22 00:00:00.000000000 Z
11
+ date: 2018-04-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: numbers_and_words
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: require_all
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
55
  description: Easy-to-use french voice synthesizer
@@ -45,265 +59,273 @@ executables:
45
59
  extensions: []
46
60
  extra_rdoc_files: []
47
61
  files:
48
- - voxbi.gemspec
49
- - lib/voxbi.rb
50
- - lib/special_chars.rb
51
- - data/paires.wav
52
- - data/paires/jɛ.ogg
53
- - data/paires/wα.ogg
54
- - data/paires/ʒø.ogg
55
- - data/paires/gɛ.ogg
56
- - data/paires/du.ogg
57
- - data/paires/n(old).ogg
58
- - data/paires/fϵ.ogg
59
- - data/paires/wσ.ogg
60
- - data/paires/lσ.ogg
61
- - data/paires/bi-old1.ogg
62
- - data/paires/s.ogg
63
- - data/paires/ge.ogg
64
- - data/paires/ra.ogg
65
- - data/paires/ø.ogg
66
- - data/paires/pø.ogg
67
- - data/paires/f.ogg
68
- - data/paires/ta.ogg
69
- - data/paires/je.ogg
70
- - data/paires/nɔ.ogg
71
- - data/paires/ku.ogg
72
- - data/paires/sσ.ogg
73
- - data/paires/jα.ogg
74
- - data/paires/ʒa.ogg
75
- - data/paires/lu.ogg
76
- - data/paires/fœ.ogg
77
- - data/paires/a.ogg
78
- - data/paires/lœ.ogg
79
- - data/paires/ʃe.ogg
80
- - data/paires/by.ogg
81
- - data/paires/pɛ.ogg
82
- - data/paires/sα.ogg
83
- - data/paires/b.ogg
84
- - data/paires/do.ogg
85
- - data/paires/ga.ogg
86
- - data/paires/ʒo.ogg
87
- - data/paires/nœ.ogg
88
- - data/paires/lα.ogg
89
- - data/paires/w.ogg
90
- - data/paires/pϵ.ogg
91
- - data/paires/zu.ogg
92
- - data/paires/ly.ogg
93
- - data/paires/n.ogg
94
- - data/paires/zo.ogg
95
- - data/paires/ba-old1.ogg
96
- - data/paires/bu.ogg
97
- - data/paires/sœ.ogg
98
- - data/paires/se.ogg
99
- - data/paires/pɔ.ogg
100
- - data/paires/sϵ.ogg
101
- - data/paires/v.ogg
102
- - data/paires/pi.ogg
103
- - data/paires/ʒœ.ogg
104
- - data/paires/kϵ.ogg
105
- - data/paires/sy.ogg
106
- - data/paires/tu.ogg
107
- - data/paires/out.ogg
108
- - data/paires/de.ogg
109
- - data/paires/sɛ.ogg
110
- - data/paires/rœ.ogg
111
- - data/paires/wi.ogg
112
- - data/paires/fα.ogg
113
- - data/paires/bo.ogg
114
- - data/paires/ko.ogg
115
- - data/paires/vu.ogg
116
- - data/paires/_.ogg
117
- - data/paires/va.ogg
118
- - data/paires/kα.ogg
119
- - data/paires/ry.ogg
120
- - data/paires/fi.ogg
121
- - data/paires/bɔ.ogg
122
- - data/paires/fo.ogg
123
- - data/paires/kσ.ogg
124
- - data/paires/tα.ogg
125
- - data/paires/pœ.ogg
126
- - data/paires/my.ogg
127
- - data/paires/π.ogg
128
- - data/paires/i.ogg
129
- - data/paires/g.ogg
130
- - data/paires/ʃo.ogg
131
- - data/paires/fu.ogg
132
- - data/paires/dœ.ogg
133
- - data/paires/ty.ogg
134
- - data/paires/jø.ogg
135
- - data/paires/zi.ogg
136
- - data/paires/wa.ogg
137
- - data/paires/ze.ogg
138
- - data/paires/jσ.ogg
139
- - data/paires/vα.ogg
140
- - data/paires/kπ.ogg
141
- - data/paires/ɲ.ogg
142
- - data/paires/tσ.ogg
143
- - data/paires/li.ogg
144
- - data/paires/ʃɛ.ogg
145
- - data/paires/tœ.ogg
146
- - data/paires/ʒi.ogg
147
- - data/paires/rσ.ogg
148
- - data/paires/nα.ogg
149
- - data/paires/ri.ogg
150
- - data/paires/di.ogg
151
- - data/paires/me.ogg
152
- - data/paires/nu.ogg
153
- - data/paires/wϵ.ogg
154
- - data/paires/go.ogg
155
- - data/paires/zα.ogg
156
- - data/paires/mσ.ogg
157
- - data/paires/ʒ.ogg
158
- - data/paires/ky.ogg
159
- - data/paires/zy.ogg
160
- - data/paires/jϵ.ogg
161
- - data/paires/kɛ.ogg
162
- - data/paires/kœ.ogg
163
- - data/paires/nɛ.ogg
164
- - data/paires/k.ogg
165
- - data/paires/œ.ogg
166
- - data/paires/ny.ogg
167
- - data/paires/mϵ.ogg
168
- - data/paires/ϵ.ogg
169
- - data/paires/mɔ.ogg
170
- - data/paires/o.ogg
171
- - data/paires/fe.ogg
172
- - data/paires/be.ogg
173
- - data/paires/to.ogg
174
- - data/paires/gu.ogg
175
- - data/paires/ti.ogg
176
- - data/paires/dø.ogg
177
- - data/paires/vɛ.ogg
178
- - data/paires/mɛ.ogg
179
- - data/paires/ke.ogg
180
- - data/paires/ʃi.ogg
181
- - data/paires/ne.ogg
182
- - data/paires/j.ogg
183
- - data/paires/py.ogg
184
- - data/paires/tϵ.ogg
185
- - data/paires/phoque.ogg
186
- - data/paires/l.ogg
187
- - data/paires/pe.ogg
188
- - data/paires/zϵ.ogg
189
- - data/paires/ro.ogg
190
- - data/paires/fy.ogg
191
- - data/paires/t.ogg
192
- - data/paires/dy.ogg
193
- - data/paires/e.ogg
194
- - data/paires/ka.ogg
195
- - data/paires/tø.ogg
196
- - data/paires/lo.ogg
197
- - data/paires/pσ.ogg
198
- - data/paires/µi.ogg
199
- - data/paires/bœ.ogg
200
- - data/paires/la.ogg
201
- - data/paires/ju.ogg
202
- - data/paires/vy.ogg
203
- - data/paires/ʃα.ogg
204
- - data/paires/su.ogg
205
- - data/paires/zɛ.ogg
206
- - data/paires/mu.ogg
207
- - data/paires/te.ogg
208
- - data/paires/ni.ogg
209
- - data/paires/bi.ogg
210
- - data/paires/so.ogg
211
- - data/paires/rϵ.ogg
212
- - data/paires/ʒα.ogg
213
- - data/paires/dɔ.ogg
214
- - data/paires/re.ogg
215
- - data/paires/za.ogg
216
- - data/paires/ʒɔ.ogg
217
- - data/paires/pu.ogg
218
- - data/paires/bα.ogg
219
- - data/paires/m.ogg
220
- - data/paires/gɔ.ogg
221
- - data/paires/si.ogg
222
- - data/paires/lø.ogg
223
- - data/paires/ki.ogg
224
- - data/paires/fa.ogg
225
- - data/paires/vœ.ogg
226
- - data/paires/ʒɛ.ogg
227
- - data/paires/lϵ.ogg
228
- - data/paires/vσ.ogg
229
- - data/paires/ʃa.ogg
230
- - data/paires/lɔ.ogg
231
- - data/paires/zσ.ogg
232
- - data/paires/gi.ogg
233
- - data/paires/vø.ogg
234
- - data/paires/gσ.ogg
235
- - data/paires/jɔ.ogg
236
- - data/paires/gy.ogg
237
- - data/paires/ma.ogg
238
- - data/paires/ʃu.ogg
239
- - data/paires/il.ogg
240
- - data/paires/ba.ogg
241
- - data/paires/le.ogg
242
- - data/paires/vϵ.ogg
243
- - data/paires/nϵ.ogg
244
- - data/paires/ka.oggpaires.wav
245
- - data/paires/tɛ.ogg
246
- - data/paires/fɔ.ogg
247
- - data/paires/mo.ogg
248
- - data/paires/mi.ogg
249
- - data/paires/sɔ.ogg
250
- - data/paires/mα.ogg
251
- - data/paires/ʒu.ogg
252
- - data/paires/kø.ogg
253
- - data/paires/rɛ.ogg
254
- - data/paires/zɔ.ogg
255
- - data/paires/dσ.ogg
256
- - data/paires/error.ogg
257
- - data/paires/wɛ.ogg
258
- - data/paires/sa.ogg
259
- - data/paires/da.ogg
260
- - data/paires/jo.ogg
261
- - data/paires/po.ogg
262
- - data/paires/d.ogg
263
- - data/paires/tɔ.ogg
264
- - data/paires/rα.ogg
265
- - data/paires/ʒe.ogg
266
- - data/paires/we.ogg
267
- - data/paires/dα.ogg
268
- - data/paires/r.ogg
269
- - data/paires/pα.ogg
270
- - data/paires/gœ.ogg
271
- - data/paires/rɔ.ogg
272
- - data/paires/fø.ogg
273
- - data/paires/fσ.ogg
274
- - data/paires/y.ogg
275
- - data/paires/pa.ogg
276
- - data/paires/σ.ogg
277
- - data/paires/ɔ.ogg
278
- - data/paires/α.ogg
279
- - data/paires/ʒy.ogg
280
- - data/paires/vi.ogg
281
- - data/paires/z.ogg
282
- - data/paires/fɛ.ogg
283
- - data/paires/bibi.ogg
284
- - data/paires/ɛ.ogg
285
- - data/paires/ve.ogg
286
- - data/paires/nσ.ogg
287
- - data/paires/na.ogg
288
- - data/paires/u.ogg
289
- - data/paires/kɔ.ogg
290
- - data/paires/p.ogg
291
- - data/paires/ru.ogg
292
- - data/paires/bσ.ogg
293
- - data/paires/mœ.ogg
294
- - data/paires/ʃ.ogg
295
- - data/paires/bϵ.ogg
296
- - data/paires/lɛ.ogg
297
- - data/paires/vɔ.ogg
298
- - data/paires/µ.ogg
299
- - data/paires/vo.ogg
300
- - data/paires_disponibles.csv
62
+ - README.md
63
+ - bin/voxbi
64
+ - data/available_pairs.csv
301
65
  - data/conversion.csv
302
- - data/phono.json
66
+ - data/dictionary.json
303
67
  - data/exceptions.csv
304
- - data/liaisons.csv
305
- - bin/voxbi
306
- - README.md
68
+ - data/linkage.csv
69
+ - data/paires.wav
70
+ - data/pairs.wav
71
+ - data/pairs/_.ogg
72
+ - data/pairs/a.ogg
73
+ - data/pairs/b.ogg
74
+ - data/pairs/ba-old1.ogg
75
+ - data/pairs/ba.ogg
76
+ - data/pairs/be.ogg
77
+ - data/pairs/bi-old1.ogg
78
+ - data/pairs/bi.ogg
79
+ - data/pairs/bibi.ogg
80
+ - data/pairs/bo.ogg
81
+ - data/pairs/bu.ogg
82
+ - data/pairs/by.ogg
83
+ - data/pairs/bœ.ogg
84
+ - data/pairs/bɔ.ogg
85
+ - data/pairs/bα.ogg
86
+ - data/pairs/bσ.ogg
87
+ - data/pairs/bϵ.ogg
88
+ - data/pairs/d.ogg
89
+ - data/pairs/da.ogg
90
+ - data/pairs/de.ogg
91
+ - data/pairs/di.ogg
92
+ - data/pairs/do.ogg
93
+ - data/pairs/du.ogg
94
+ - data/pairs/dy.ogg
95
+ - data/pairs/dø.ogg
96
+ - data/pairs/dœ.ogg
97
+ - data/pairs/dɔ.ogg
98
+ - data/pairs/dα.ogg
99
+ - data/pairs/dσ.ogg
100
+ - data/pairs/dϵ.ogg
101
+ - data/pairs/e.ogg
102
+ - data/pairs/error.ogg
103
+ - data/pairs/f.ogg
104
+ - data/pairs/fa.ogg
105
+ - data/pairs/fe.ogg
106
+ - data/pairs/fi.ogg
107
+ - data/pairs/fo.ogg
108
+ - data/pairs/fu.ogg
109
+ - data/pairs/fy.ogg
110
+ - data/pairs/fø.ogg
111
+ - data/pairs/fœ.ogg
112
+ - data/pairs/fɔ.ogg
113
+ - data/pairs/fɛ.ogg
114
+ - data/pairs/fα.ogg
115
+ - data/pairs/fσ.ogg
116
+ - data/pairs/fϵ.ogg
117
+ - data/pairs/g.ogg
118
+ - data/pairs/ga.ogg
119
+ - data/pairs/ge.ogg
120
+ - data/pairs/gi.ogg
121
+ - data/pairs/go.ogg
122
+ - data/pairs/gu.ogg
123
+ - data/pairs/gy.ogg
124
+ - data/pairs/gœ.ogg
125
+ - data/pairs/gɔ.ogg
126
+ - data/pairs/gɛ.ogg
127
+ - data/pairs/gσ.ogg
128
+ - data/pairs/i.ogg
129
+ - data/pairs/il.ogg
130
+ - data/pairs/j.ogg
131
+ - data/pairs/je.ogg
132
+ - data/pairs/jo.ogg
133
+ - data/pairs/ju.ogg
134
+ - data/pairs/jø.ogg
135
+ - data/pairs/jɔ.ogg
136
+ - data/pairs/jɛ.ogg
137
+ - data/pairs/jα.ogg
138
+ - data/pairs/jσ.ogg
139
+ - data/pairs/jϵ.ogg
140
+ - data/pairs/k.ogg
141
+ - data/pairs/ka.ogg
142
+ - data/pairs/ka.oggpaires.wav
143
+ - data/pairs/ke.ogg
144
+ - data/pairs/ki.ogg
145
+ - data/pairs/ko.ogg
146
+ - data/pairs/ku.ogg
147
+ - data/pairs/ky.ogg
148
+ - data/pairs/kø.ogg
149
+ - data/pairs/kœ.ogg
150
+ - data/pairs/kɔ.ogg
151
+ - data/pairs/kɛ.ogg
152
+ - data/pairs/kα.ogg
153
+ - data/pairs/kπ.ogg
154
+ - data/pairs/kσ.ogg
155
+ - data/pairs/kϵ.ogg
156
+ - data/pairs/l.ogg
157
+ - data/pairs/la.ogg
158
+ - data/pairs/le.ogg
159
+ - data/pairs/li.ogg
160
+ - data/pairs/lo.ogg
161
+ - data/pairs/lu.ogg
162
+ - data/pairs/ly.ogg
163
+ - data/pairs/lø.ogg
164
+ - data/pairs/lœ.ogg
165
+ - data/pairs/lɔ.ogg
166
+ - data/pairs/lɛ.ogg
167
+ - data/pairs/lα.ogg
168
+ - data/pairs/lσ.ogg
169
+ - data/pairs/lϵ.ogg
170
+ - data/pairs/m.ogg
171
+ - data/pairs/ma.ogg
172
+ - data/pairs/me.ogg
173
+ - data/pairs/mi.ogg
174
+ - data/pairs/mo.ogg
175
+ - data/pairs/mu.ogg
176
+ - data/pairs/my.ogg
177
+ - data/pairs/mœ.ogg
178
+ - data/pairs/mɔ.ogg
179
+ - data/pairs/mɛ.ogg
180
+ - data/pairs/mα.ogg
181
+ - data/pairs/mσ.ogg
182
+ - data/pairs/mϵ.ogg
183
+ - data/pairs/n(old).ogg
184
+ - data/pairs/n.ogg
185
+ - data/pairs/na.ogg
186
+ - data/pairs/ne.ogg
187
+ - data/pairs/ni.ogg
188
+ - data/pairs/nu.ogg
189
+ - data/pairs/ny.ogg
190
+ - data/pairs/nœ.ogg
191
+ - data/pairs/nɔ.ogg
192
+ - data/pairs/nɛ.ogg
193
+ - data/pairs/nα.ogg
194
+ - data/pairs/nσ.ogg
195
+ - data/pairs/nϵ.ogg
196
+ - data/pairs/o.ogg
197
+ - data/pairs/out.ogg
198
+ - data/pairs/p.ogg
199
+ - data/pairs/pa.ogg
200
+ - data/pairs/pe.ogg
201
+ - data/pairs/phoque.ogg
202
+ - data/pairs/pi.ogg
203
+ - data/pairs/po.ogg
204
+ - data/pairs/pu.ogg
205
+ - data/pairs/py.ogg
206
+ - data/pairs/pø.ogg
207
+ - data/pairs/pœ.ogg
208
+ - data/pairs/pɔ.ogg
209
+ - data/pairs/pɛ.ogg
210
+ - data/pairs/pα.ogg
211
+ - data/pairs/pσ.ogg
212
+ - data/pairs/pϵ.ogg
213
+ - data/pairs/r.ogg
214
+ - data/pairs/ra.ogg
215
+ - data/pairs/re.ogg
216
+ - data/pairs/ri.ogg
217
+ - data/pairs/ro.ogg
218
+ - data/pairs/ru.ogg
219
+ - data/pairs/ry.ogg
220
+ - data/pairs/rœ.ogg
221
+ - data/pairs/rɔ.ogg
222
+ - data/pairs/rɛ.ogg
223
+ - data/pairs/rα.ogg
224
+ - data/pairs/rσ.ogg
225
+ - data/pairs/rϵ.ogg
226
+ - data/pairs/s.ogg
227
+ - data/pairs/sa.ogg
228
+ - data/pairs/se.ogg
229
+ - data/pairs/si.ogg
230
+ - data/pairs/so.ogg
231
+ - data/pairs/su.ogg
232
+ - data/pairs/sy.ogg
233
+ - data/pairs/sœ.ogg
234
+ - data/pairs/sɔ.ogg
235
+ - data/pairs/sɛ.ogg
236
+ - data/pairs/sα.ogg
237
+ - data/pairs/sσ.ogg
238
+ - data/pairs/sϵ.ogg
239
+ - data/pairs/t.ogg
240
+ - data/pairs/ta.ogg
241
+ - data/pairs/te.ogg
242
+ - data/pairs/ti.ogg
243
+ - data/pairs/to.ogg
244
+ - data/pairs/tu.ogg
245
+ - data/pairs/ty.ogg
246
+ - data/pairs/tø.ogg
247
+ - data/pairs/tœ.ogg
248
+ - data/pairs/tɔ.ogg
249
+ - data/pairs/tɛ.ogg
250
+ - data/pairs/tα.ogg
251
+ - data/pairs/tσ.ogg
252
+ - data/pairs/tϵ.ogg
253
+ - data/pairs/u.ogg
254
+ - data/pairs/v.ogg
255
+ - data/pairs/va.ogg
256
+ - data/pairs/ve.ogg
257
+ - data/pairs/vi.ogg
258
+ - data/pairs/vo.ogg
259
+ - data/pairs/vu.ogg
260
+ - data/pairs/vy.ogg
261
+ - data/pairs/vø.ogg
262
+ - data/pairs/vœ.ogg
263
+ - data/pairs/vɔ.ogg
264
+ - data/pairs/vɛ.ogg
265
+ - data/pairs/vα.ogg
266
+ - data/pairs/vσ.ogg
267
+ - data/pairs/vϵ.ogg
268
+ - data/pairs/w.ogg
269
+ - data/pairs/wa.ogg
270
+ - data/pairs/we.ogg
271
+ - data/pairs/wi.ogg
272
+ - data/pairs/wɛ.ogg
273
+ - data/pairs/wα.ogg
274
+ - data/pairs/wσ.ogg
275
+ - data/pairs/wϵ.ogg
276
+ - data/pairs/y.ogg
277
+ - data/pairs/z.ogg
278
+ - data/pairs/za.ogg
279
+ - data/pairs/ze.ogg
280
+ - data/pairs/zi.ogg
281
+ - data/pairs/zo.ogg
282
+ - data/pairs/zu.ogg
283
+ - data/pairs/zy.ogg
284
+ - data/pairs/zɔ.ogg
285
+ - data/pairs/zɛ.ogg
286
+ - data/pairs/zα.ogg
287
+ - data/pairs/zσ.ogg
288
+ - data/pairs/zϵ.ogg
289
+ - data/pairs/µ.ogg
290
+ - data/pairs/µi.ogg
291
+ - data/pairs/ø.ogg
292
+ - data/pairs/œ.ogg
293
+ - data/pairs/ɔ.ogg
294
+ - data/pairs/ɛ.ogg
295
+ - data/pairs/ɲ.ogg
296
+ - data/pairs/ʃ.ogg
297
+ - data/pairs/ʃa.ogg
298
+ - data/pairs/ʃe.ogg
299
+ - data/pairs/ʃi.ogg
300
+ - data/pairs/ʃo.ogg
301
+ - data/pairs/ʃu.ogg
302
+ - data/pairs/ʃɛ.ogg
303
+ - data/pairs/ʃα.ogg
304
+ - data/pairs/ʒ.ogg
305
+ - data/pairs/ʒa.ogg
306
+ - data/pairs/ʒe.ogg
307
+ - data/pairs/ʒi.ogg
308
+ - data/pairs/ʒo.ogg
309
+ - data/pairs/ʒu.ogg
310
+ - data/pairs/ʒy.ogg
311
+ - data/pairs/ʒø.ogg
312
+ - data/pairs/ʒœ.ogg
313
+ - data/pairs/ʒɔ.ogg
314
+ - data/pairs/ʒɛ.ogg
315
+ - data/pairs/ʒα.ogg
316
+ - data/pairs/α.ogg
317
+ - data/pairs/π.ogg
318
+ - data/pairs/σ.ogg
319
+ - data/pairs/ϵ.ogg
320
+ - lib/extensions/string.rb
321
+ - lib/modules/rulable.rb
322
+ - lib/services/get_pairs_service.rb
323
+ - lib/services/get_syllables_service.rb
324
+ - lib/services/linkage_service.rb
325
+ - lib/services/phonetics_converter_service.rb
326
+ - lib/services/prepare_text_service.rb
327
+ - lib/voxbi.rb
328
+ - voxbi.gemspec
307
329
  homepage: https://github.com/Galaad-Gauthier/VoxBi
308
330
  licenses:
309
331
  - MIT
@@ -314,17 +336,17 @@ require_paths:
314
336
  - lib
315
337
  required_ruby_version: !ruby/object:Gem::Requirement
316
338
  requirements:
317
- - - '>='
339
+ - - ">="
318
340
  - !ruby/object:Gem::Version
319
341
  version: '0'
320
342
  required_rubygems_version: !ruby/object:Gem::Requirement
321
343
  requirements:
322
- - - '>='
344
+ - - ">="
323
345
  - !ruby/object:Gem::Version
324
346
  version: '0'
325
347
  requirements: []
326
348
  rubyforge_project:
327
- rubygems_version: 2.0.5
349
+ rubygems_version: 2.5.1
328
350
  signing_key:
329
351
  specification_version: 4
330
352
  summary: VoxBi