ssmd 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 03caaaca94965b74c05fc30c4eeb711f78b533b0
|
4
|
+
data.tar.gz: 4f046adf9b9f249dca0a0314c1145a6f3511ef87
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2066578aac73b3ac021aa060eeb8d06befdf9fcbcdb70c8782b275d86cb95d1632fcca4bb727bd54def7ae009e8e8ed3bf1930709f78d1291a441b13602b1f5a
|
7
|
+
data.tar.gz: 7ab57f41be445fb91b5c1c412b4824710bb81a5bb4fed30be8e251841438ea0e9e5ac41982e5fd0702991e60050404943a9d2307dc9d82b7e73f57fff6234adf
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative 'annotation'
|
2
|
+
|
3
|
+
require 'pathname'
|
4
|
+
|
5
|
+
module SSMD::Annotations
|
6
|
+
class SubstitutionAnnotation < Annotation
|
7
|
+
attr_reader :text_alias
|
8
|
+
|
9
|
+
def self.regex
|
10
|
+
/sub: ?(.+)/
|
11
|
+
end
|
12
|
+
|
13
|
+
def initialize(text_alias)
|
14
|
+
@text_alias = text_alias
|
15
|
+
end
|
16
|
+
|
17
|
+
def wrap(text)
|
18
|
+
"<sub alias=\"#{text_alias}\">#{text}</sub>"
|
19
|
+
end
|
20
|
+
|
21
|
+
def combine(annotation)
|
22
|
+
self # discard further substitution annotations
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/ssmd/annotations.rb
CHANGED
data/lib/ssmd/converter.rb
CHANGED
@@ -2,19 +2,20 @@ require 'ssmd/processors'
|
|
2
2
|
|
3
3
|
module SSMD
|
4
4
|
class Converter
|
5
|
-
attr_reader :input
|
5
|
+
attr_reader :input, :skip
|
6
6
|
|
7
7
|
def initialize(input, skip: [])
|
8
8
|
@input = input
|
9
|
+
@skip = Array(skip)
|
9
10
|
|
10
11
|
processors.delete_if do |processor|
|
11
|
-
|
12
|
+
self.skip.any? { |name| processor.name =~ /\ASSMD::Processors::#{name}Processor\Z/i }
|
12
13
|
end
|
13
14
|
end
|
14
15
|
|
15
16
|
def convert
|
16
17
|
result = processors.inject(input.encode(xml: :text)) do |text, processor|
|
17
|
-
process processor.new, text
|
18
|
+
process processor.new(processor_options), text
|
18
19
|
end
|
19
20
|
|
20
21
|
"<speak>#{result.strip}</speak>"
|
@@ -22,7 +23,7 @@ module SSMD
|
|
22
23
|
|
23
24
|
def strip
|
24
25
|
processors.inject(input) do |text, processor|
|
25
|
-
process processor.new, text, strip: true
|
26
|
+
process processor.new(processor_options), text, strip: true
|
26
27
|
end
|
27
28
|
end
|
28
29
|
|
@@ -45,5 +46,9 @@ module SSMD
|
|
45
46
|
input
|
46
47
|
end
|
47
48
|
end
|
49
|
+
|
50
|
+
def processor_options
|
51
|
+
{ skip: skip }
|
52
|
+
end
|
48
53
|
end
|
49
54
|
end
|
@@ -6,6 +6,16 @@ module SSMD::Processors
|
|
6
6
|
class AnnotationProcessor < Processor
|
7
7
|
attr_reader :annotations
|
8
8
|
|
9
|
+
def initialize(options = {})
|
10
|
+
super
|
11
|
+
|
12
|
+
@annotations = self.class.annotations.dup
|
13
|
+
|
14
|
+
annotations.delete_if do |annotation|
|
15
|
+
Array(options[:skip]).any? { |name| annotation.name =~ /\ASSMD::Annotations::#{name}Annotation\Z/i }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
9
19
|
def result
|
10
20
|
_, annotations_text = match.captures
|
11
21
|
|
@@ -21,7 +31,11 @@ module SSMD::Processors
|
|
21
31
|
def self.annotations
|
22
32
|
a = SSMD::Annotations
|
23
33
|
|
24
|
-
[
|
34
|
+
[
|
35
|
+
a::LanguageAnnotation, a::PhonemeAnnotation, a::ProsodyAnnotation,
|
36
|
+
a::SubstitutionAnnotation
|
37
|
+
]
|
38
|
+
.freeze
|
25
39
|
end
|
26
40
|
|
27
41
|
def ok?
|
@@ -65,7 +79,7 @@ module SSMD::Processors
|
|
65
79
|
#
|
66
80
|
# [Guardians of the Galaxy](en-GB, v: +4dB, p: -3%)
|
67
81
|
def regex
|
68
|
-
%r{
|
82
|
+
@regex ||= %r{
|
69
83
|
\[ # opening text
|
70
84
|
([^\]]+) # annotated text
|
71
85
|
\] # closing text
|
@@ -80,7 +94,7 @@ module SSMD::Processors
|
|
80
94
|
end
|
81
95
|
|
82
96
|
def annotations_regex
|
83
|
-
|
97
|
+
annotations.map(&:regex).join("|")
|
84
98
|
end
|
85
99
|
|
86
100
|
def warnings
|
data/lib/ssmd/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ssmd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Markus Kahl
|
@@ -110,6 +110,7 @@ files:
|
|
110
110
|
- lib/ssmd/annotations/language_annotation.rb
|
111
111
|
- lib/ssmd/annotations/phoneme_annotation.rb
|
112
112
|
- lib/ssmd/annotations/prosody_annotation.rb
|
113
|
+
- lib/ssmd/annotations/substitution_annotation.rb
|
113
114
|
- lib/ssmd/annotations/xsampa_to_ipa_table.txt
|
114
115
|
- lib/ssmd/converter.rb
|
115
116
|
- lib/ssmd/processors.rb
|