freetts 0.1.0 → 0.2.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.
- data/README.md +11 -3
- data/bin/freetts +2 -6
- data/examples/hello_world.rb +1 -1
- data/examples/rss_reader.rb +13 -5
- data/examples/voice_play.rb +1 -2
- data/freetts.gemspec +1 -1
- data/lib/freetts.rb +3 -13
- data/lib/freetts/freetts.rb +11 -0
- data/lib/freetts/version.rb +1 -1
- data/lib/freetts/voice.rb +23 -0
- metadata +4 -2
data/README.md
CHANGED
@@ -19,11 +19,19 @@ This wrapper exposes the most essential functionality required for processing
|
|
19
19
|
text-to-speech requests.
|
20
20
|
|
21
21
|
|
22
|
+
### Installation
|
23
|
+
Installing the library is as simple as:
|
24
|
+
|
25
|
+
```bash
|
26
|
+
gem install freetts
|
27
|
+
```
|
28
|
+
|
29
|
+
|
22
30
|
### Sample Code
|
23
31
|
It's easy enough to pass a String to FreeTTS:
|
24
32
|
|
25
33
|
```ruby
|
26
|
-
require "
|
34
|
+
require "freetts"
|
27
35
|
|
28
36
|
FreeTTS.speak "hello world"
|
29
37
|
```
|
@@ -33,7 +41,7 @@ With a little bit of manipulation, FreeTTS can read the news to you:
|
|
33
41
|
```ruby
|
34
42
|
require "uri"
|
35
43
|
require "rss"
|
36
|
-
require "
|
44
|
+
require "freetts"
|
37
45
|
|
38
46
|
uri = URI.parse("http://feeds.feedburner.com/RubyInside")
|
39
47
|
feed_items = RSS::Parser.parse(uri.read, false).items.first(5)
|
@@ -64,4 +72,4 @@ examples/voice_play.rb
|
|
64
72
|
|
65
73
|
## Future Enhancements
|
66
74
|
- An adapter for plugging IO objects directly into the speech synthesizer
|
67
|
-
|
75
|
+
|
data/bin/freetts
CHANGED
@@ -1,16 +1,12 @@
|
|
1
1
|
#!/usr/bin/env jruby
|
2
2
|
|
3
|
-
require "freetts"
|
4
|
-
|
5
|
-
|
6
|
-
USAGE_MESSAGE = "please enter a message for free t t s to speak"
|
7
3
|
USAGE_EXAMPLE = "Usage: freetts <MESSAGE>"
|
8
4
|
|
9
5
|
if ARGV.length > 0
|
6
|
+
require "freetts"
|
10
7
|
message = ARGV.join(" ")
|
11
8
|
FreeTTS.speak(message)
|
12
9
|
else
|
13
|
-
FreeTTS.speak(USAGE_MESSAGE)
|
14
10
|
puts USAGE_EXAMPLE
|
15
11
|
exit(false)
|
16
|
-
end
|
12
|
+
end
|
data/examples/hello_world.rb
CHANGED
data/examples/rss_reader.rb
CHANGED
@@ -1,20 +1,28 @@
|
|
1
1
|
#!/usr/bin/env jruby
|
2
2
|
|
3
|
-
|
4
|
-
$:.unshift File.join(File.dirname(__FILE__), "../lib")
|
5
3
|
require "uri"
|
6
4
|
require "rss"
|
7
5
|
require "freetts"
|
8
6
|
|
9
7
|
|
10
|
-
feed_url = "http://feeds.feedburner.com/
|
8
|
+
feed_url = "http://feeds.feedburner.com/RubyInside"
|
11
9
|
|
12
10
|
uri = URI.parse(feed_url)
|
11
|
+
content = uri.read
|
12
|
+
puts content
|
13
|
+
puts content.encoding
|
14
|
+
content.force_encoding("utf-8")
|
15
|
+
puts content.encoding
|
13
16
|
|
14
|
-
feed_items = RSS::Parser.parse(
|
17
|
+
feed_items = RSS::Parser.parse(content, false).items.first(5)
|
15
18
|
|
16
19
|
feed_items.each do |item|
|
17
|
-
title =
|
20
|
+
title = begin
|
21
|
+
item.title.content # works for RSS:Atom feeds
|
22
|
+
rescue NoMethodError
|
23
|
+
item.title.to_s # works for standard RSS
|
24
|
+
end
|
25
|
+
|
18
26
|
puts title
|
19
27
|
FreeTTS.speak(title)
|
20
28
|
end
|
data/examples/voice_play.rb
CHANGED
data/freetts.gemspec
CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.files = `git ls-files`.split("\n")
|
16
16
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
17
|
s.executables = ["freetts"]
|
18
|
-
s.require_paths = ["lib"]
|
18
|
+
s.require_paths = ["lib", "vendor"]
|
19
19
|
|
20
20
|
# specify any dependencies here; for example:
|
21
21
|
# s.add_development_dependency "rspec"
|
data/lib/freetts.rb
CHANGED
@@ -1,18 +1,8 @@
|
|
1
|
-
$:.unshift(File.dirname(__FILE__))
|
2
|
-
|
3
1
|
require "java"
|
4
|
-
require "
|
2
|
+
require "freetts.jar"
|
5
3
|
|
6
|
-
require "freetts/voice"
|
7
4
|
require "freetts/version"
|
5
|
+
require "freetts/voice"
|
6
|
+
require "freetts/freetts"
|
8
7
|
|
9
8
|
|
10
|
-
module FreeTTS
|
11
|
-
@current_voice = Voice.for_name(Voice::DEFAULT_NAME)
|
12
|
-
class << self; attr_accessor :current_voice; end
|
13
|
-
|
14
|
-
|
15
|
-
def self.speak(speakable)
|
16
|
-
self.current_voice.speak(speakable)
|
17
|
-
end
|
18
|
-
end
|
data/lib/freetts/version.rb
CHANGED
data/lib/freetts/voice.rb
CHANGED
@@ -2,9 +2,32 @@ module FreeTTS
|
|
2
2
|
class Voice
|
3
3
|
DEFAULT_NAME = "kevin16"
|
4
4
|
|
5
|
+
ACCESSIBLE_ATTRIBUTES = %w( age description domain duration_stretch
|
6
|
+
gender locale name organization pitch
|
7
|
+
pitch_range pitch_shift rate run_title style
|
8
|
+
volume )
|
9
|
+
MODIFIABLE_ATTRIBUTES = %w( duration_stretch pitch pitch_range pitch_shift
|
10
|
+
rate volume )
|
11
|
+
|
12
|
+
|
5
13
|
@voice_manager = com.sun.speech.freetts.VoiceManager.get_instance
|
6
14
|
class << self; attr_reader :voice_manager; end
|
15
|
+
#class << self
|
16
|
+
# attr_accessor :voice_manager
|
17
|
+
# @voice_manager = com.sun.speech.freetts.VoiceManager.get_instance
|
18
|
+
#end
|
7
19
|
|
20
|
+
ACCESSIBLE_ATTRIBUTES.each do |attribute|
|
21
|
+
ruby_method = attribute.to_sym
|
22
|
+
java_method = "get_#{ attribute }".to_sym
|
23
|
+
define_method(ruby_method) { @voice_impl.send(java_method) }
|
24
|
+
end
|
25
|
+
|
26
|
+
MODIFIABLE_ATTRIBUTES.each do |attribute|
|
27
|
+
ruby_method = "#{ attribute }=".to_sym
|
28
|
+
java_method = "set_#{ attribute }".to_sym
|
29
|
+
define_method(ruby_method) { |value| @voice_impl.send(java_method, value) }
|
30
|
+
end
|
8
31
|
|
9
32
|
def initialize(voice)
|
10
33
|
@voice_impl = voice
|
metadata
CHANGED
@@ -2,14 +2,14 @@
|
|
2
2
|
name: freetts
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.2.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Chris kottom
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-09-
|
12
|
+
date: 2011-09-21 00:00:00.000000000 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
description: FreeTTS provides a simple wrapper around the Java library of the same name in order to expose a voice synthesis API.
|
@@ -28,6 +28,7 @@ files:
|
|
28
28
|
- examples/voice_play.rb
|
29
29
|
- freetts.gemspec
|
30
30
|
- lib/freetts.rb
|
31
|
+
- lib/freetts/freetts.rb
|
31
32
|
- lib/freetts/version.rb
|
32
33
|
- lib/freetts/voice.rb
|
33
34
|
- test/freetts_test.rb
|
@@ -47,6 +48,7 @@ post_install_message:
|
|
47
48
|
rdoc_options: []
|
48
49
|
require_paths:
|
49
50
|
- lib
|
51
|
+
- vendor
|
50
52
|
required_ruby_version: !ruby/object:Gem::Requirement
|
51
53
|
requirements:
|
52
54
|
- - ! '>='
|