ssmd 0.7.3 → 0.7.4
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 +5 -5
- data/README.md +16 -1
- data/SPECIFICATION.md +2 -2
- data/lib/ssmd/converter.rb +22 -2
- data/lib/ssmd/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d09b748d209127855bbf790dc89eaa53891d978b3070773212203a6c1d460dc4
|
4
|
+
data.tar.gz: 90495308c981fd7cd3b857c05461a478ed287878fe79832584b67625ed768351
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 80f139fc45586b23c2247275f7ffcca9c06d1664a123e25f7ff418ee15613cc0b59515d22b6de3aaca2b96eb61e9bb6921bec7a91b9ce5b001f19b49f18e16d1
|
7
|
+
data.tar.gz: 236365024367acb03f85422e30c4b773e80c478ef5d8743b4f65b85abc434511bbaa440b6a656cf011b743a7146c6b7e535597e5884eb325c904465e85a57b66
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
[](https://travis-ci.org/machisuji/ssmd)
|
4
4
|
|
5
|
-
Speech Synthesis Markdown (SSMD) is
|
5
|
+
Speech Synthesis Markdown (SSMD) is a lightweight alternative syntax for [SSML](https://www.w3.org/TR/speech-synthesis/).
|
6
6
|
This repository contains both the reference implementation of the SSMD-to-SSML conversion tool (`ssmd`) as well
|
7
7
|
as the [specification](SPECIFICATION.md) of the language.
|
8
8
|
|
@@ -28,6 +28,8 @@ Or install it yourself as:
|
|
28
28
|
|
29
29
|
## Usage
|
30
30
|
|
31
|
+
You can convert SSML to SSMD using `SSMD::to_ssml`:
|
32
|
+
|
31
33
|
```ruby
|
32
34
|
require 'ssmd'
|
33
35
|
|
@@ -38,6 +40,19 @@ puts ssml
|
|
38
40
|
# Output: <speak>hello <emphasis>SSMD</emphasis>!</speak>
|
39
41
|
```
|
40
42
|
|
43
|
+
Sometimes you will want to see just the plain text without any SSMD annotations.
|
44
|
+
For this you can use `SSMD::stip_ssmd`:
|
45
|
+
|
46
|
+
```ruby
|
47
|
+
require 'ssmd'
|
48
|
+
|
49
|
+
ssmd = "[hallo](de) *SSMD*!"
|
50
|
+
plain_text = SSMD.strip_ssmd ssmd
|
51
|
+
|
52
|
+
puts plain_text
|
53
|
+
# Output: hallo SSMD!
|
54
|
+
```
|
55
|
+
|
41
56
|
**Note:**
|
42
57
|
|
43
58
|
This version is still under development. See below which essential SSML constructs are implemented so far:
|
data/SPECIFICATION.md
CHANGED
@@ -107,7 +107,7 @@ I saw <lang xml:lang="de-DE">"Die Häschenschule"</lang> in the cinema.
|
|
107
107
|
|
108
108
|
### Mark
|
109
109
|
|
110
|
-
Sections of text can be tagged using marks. They do not
|
110
|
+
Sections of text can be tagged using marks. They do not affect the synthesis but
|
111
111
|
can be returned by SSML processing engines as meta information and to emit
|
112
112
|
events during processing based on these marks.
|
113
113
|
|
@@ -242,7 +242,7 @@ medium
|
|
242
242
|
```
|
243
243
|
|
244
244
|
The shortcuts are listed first. While they can be combined, sometimes it's easier and shorter to just use
|
245
|
-
the
|
245
|
+
the explicit form shown in the last 2 lines. All of them can be nested, too.
|
246
246
|
Moreover changes in volume (`[louder](v: +10dB)`) and pitch (`[lower](p: -4%)`) can also be given explicitly in relative values.
|
247
247
|
|
248
248
|
***
|
data/lib/ssmd/converter.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'ssmd/processors'
|
2
|
+
require 'cgi'
|
2
3
|
|
3
4
|
module SSMD
|
4
5
|
class Converter
|
@@ -14,7 +15,7 @@ module SSMD
|
|
14
15
|
end
|
15
16
|
|
16
17
|
def convert
|
17
|
-
result = processors.inject(input
|
18
|
+
result = processors.inject(escape_xml(input)) do |text, processor|
|
18
19
|
process processor.new(processor_options), text
|
19
20
|
end
|
20
21
|
|
@@ -22,9 +23,11 @@ module SSMD
|
|
22
23
|
end
|
23
24
|
|
24
25
|
def strip
|
25
|
-
processors.inject(input) do |text, processor|
|
26
|
+
result = processors.inject(escape_xml(input)) do |text, processor|
|
26
27
|
process processor.new(processor_options), text, strip: true
|
27
28
|
end
|
29
|
+
|
30
|
+
unescape_xml result
|
28
31
|
end
|
29
32
|
|
30
33
|
def processors
|
@@ -50,5 +53,22 @@ module SSMD
|
|
50
53
|
def processor_options
|
51
54
|
{ skip: skip }
|
52
55
|
end
|
56
|
+
|
57
|
+
##
|
58
|
+
# Substitutes special characters with their XML entity.
|
59
|
+
# E.g. it substitutes "<" with "<".
|
60
|
+
def escape_xml(text)
|
61
|
+
text.encode(xml: :text)
|
62
|
+
end
|
63
|
+
|
64
|
+
##
|
65
|
+
# Substitutes back XML entities with their plain text equivalent.
|
66
|
+
# E.g. it substitutes "<" with "<".
|
67
|
+
#
|
68
|
+
# @TODO Find alternative which applies to XML in general.
|
69
|
+
# Not sure if it even makes a difference in this case, though.
|
70
|
+
def unescape_xml(text)
|
71
|
+
CGI.unescape_html text
|
72
|
+
end
|
53
73
|
end
|
54
74
|
end
|
data/lib/ssmd/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ssmd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Markus Kahl
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -144,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
144
144
|
version: '0'
|
145
145
|
requirements: []
|
146
146
|
rubyforge_project:
|
147
|
-
rubygems_version: 2.6
|
147
|
+
rubygems_version: 2.7.6
|
148
148
|
signing_key:
|
149
149
|
specification_version: 4
|
150
150
|
summary: Speech Synthesis Markdown (SSMD) is an lightweight alternative syntax for
|