tts 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE.txt +1 -1
- data/README.rdoc +11 -19
- data/VERSION +1 -1
- data/lib/tts.rb +58 -24
- data/tts.gemspec +3 -5
- metadata +32 -14
- data/pkg/tts-.gem +0 -0
- data/pkg/tts-0.0.1.gem +0 -0
data/LICENSE.txt
CHANGED
data/README.rdoc
CHANGED
@@ -1,27 +1,19 @@
|
|
1
1
|
= tts
|
2
2
|
|
3
|
-
Google
|
3
|
+
Using the Google Translate service as the speech engine, this gem generates a .mp3 voice file from any given string.
|
4
4
|
|
5
|
-
|
5
|
+
== Usage
|
6
|
+
# Will download "Hello World!.mp3" to your current directory
|
7
|
+
# Supported languages: ["zh", "en", "it", "fr"]
|
8
|
+
"Hello World!".to_file "en"
|
6
9
|
|
7
|
-
|
8
|
-
|
10
|
+
# Save the file to a specific location
|
11
|
+
"Light rain with highs of 5 degrees".to_file "en", "~/weather.mp3"
|
9
12
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
"人民代表代表人民".to_file "zh"
|
15
|
-
|
16
|
-
|
17
|
-
You can also save the file with the path/filename you desired:
|
18
|
-
|
19
|
-
"ruby is awesome".to_file "en", "~/rubyyyy.mp3"
|
20
|
-
|
21
|
-
=== 0.3.0 new ability to add 3rd party server, to Config server url
|
22
|
-
If you have problem to visit original google tts url, you can set a another tts server url, for example:
|
23
|
-
Tts.server_url "http://www.3rdparty.com/translate_tts"
|
13
|
+
# Supports large text files, as the gem will batch up the requests to Google (as each request max 100 chars)
|
14
|
+
text = "People living on the east coast of England have been warned to stay away from their homes because of further high tides expected later. The tidal surge that hit the UK is said to have been the worst for 60 years, with thousands abandoning their homes."
|
15
|
+
text.to_file "en"
|
24
16
|
|
25
17
|
== Copyright
|
26
18
|
|
27
|
-
Copyright (c) 2011 Yiling Cao. Check LICENSE.txt
|
19
|
+
Copyright (c) 2011 Yiling Cao / Charlie Revett. Check LICENSE.txt
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/lib/tts.rb
CHANGED
@@ -1,46 +1,80 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
|
3
|
-
|
4
|
-
fn.gsub(/[\x00\/\\:\*\?\"<>\|]/, '_')
|
5
|
-
end
|
6
|
-
|
2
|
+
require 'open-uri'
|
3
|
+
require 'uri'
|
7
4
|
|
8
5
|
module Tts
|
9
6
|
@@default_url = "http://translate.google.com/translate_tts"
|
10
|
-
|
11
|
-
|
12
|
-
|
7
|
+
@@user_agent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24"
|
8
|
+
|
9
|
+
def to_file lang, file_name=nil
|
10
|
+
parts = validate_text_length(self)
|
11
|
+
file_name = generate_file_name(self[0..20]) if file_name.nil?
|
12
|
+
parts.each do |part|
|
13
|
+
url = part.to_url(lang)
|
14
|
+
fetch_mp3(url, file_name)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def validate_text_length text
|
19
|
+
if text.length > 100
|
20
|
+
chunk_text(text)
|
21
|
+
else
|
22
|
+
[text]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def chunk_text text
|
27
|
+
chunks = []
|
28
|
+
words = split_into_words(text)
|
29
|
+
chunk = ''
|
30
|
+
words.each do |word|
|
31
|
+
if (chunk.length + word.length) > 100
|
32
|
+
chunks << chunk.strip!
|
33
|
+
chunk = ''
|
34
|
+
end
|
35
|
+
chunk += "#{word} "
|
36
|
+
end
|
37
|
+
chunks << chunk.strip!
|
38
|
+
end
|
39
|
+
|
40
|
+
def split_into_words text
|
41
|
+
text.gsub(/\s+/m, ' ').strip.split(" ")
|
42
|
+
end
|
43
|
+
|
44
|
+
def generate_file_name text
|
45
|
+
to_valid_fn(text + ".mp3")
|
46
|
+
end
|
47
|
+
|
48
|
+
def to_valid_fn fn
|
49
|
+
fn.gsub(/[\x00\/\\:\*\?\"<>\|]/, '_')
|
13
50
|
end
|
14
51
|
|
15
52
|
def to_url lang
|
16
|
-
require 'uri'
|
17
53
|
langs = ["zh", "en", "it", "fr"]
|
18
|
-
|
54
|
+
raise "Not accepted language, accpeted are #{langs * ","}" unless langs.include? lang
|
19
55
|
base = "#{Tts.server_url}?tl=#{lang}&q=#{URI.escape self}"
|
20
56
|
end
|
21
57
|
|
22
|
-
def
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
begin
|
28
|
-
content = open(url, "User-Agent" => ua).read
|
29
|
-
|
30
|
-
File.open(file_name, "wb") do |f|
|
58
|
+
def fetch_mp3 url, file_name
|
59
|
+
begin
|
60
|
+
content = open(url, "User-Agent" => @@user_agent).read
|
61
|
+
|
62
|
+
File.open("temp.mp3", "wb") do |f|
|
31
63
|
f.puts content
|
32
64
|
end
|
33
|
-
|
34
|
-
|
65
|
+
merge_mp3_file(file_name)
|
66
|
+
rescue => e
|
67
|
+
$stderr.puts("Internet error! #{e.message}")
|
35
68
|
exit(1)
|
36
69
|
end
|
70
|
+
end
|
37
71
|
|
72
|
+
def merge_mp3_file file_name
|
73
|
+
`cat temp.mp3 >> "#{file_name}" && rm temp.mp3`
|
38
74
|
end
|
75
|
+
|
39
76
|
end
|
40
77
|
|
41
78
|
class String
|
42
|
-
|
43
|
-
|
44
|
-
|
45
79
|
include Tts
|
46
80
|
end
|
data/tts.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "tts"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Yiling Cao"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2014-01-14"
|
13
13
|
s.description = "easy way to generate a voice file based on text prvoided."
|
14
14
|
s.email = "yiling.cao@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -24,15 +24,13 @@ Gem::Specification.new do |s|
|
|
24
24
|
"Rakefile",
|
25
25
|
"VERSION",
|
26
26
|
"lib/tts.rb",
|
27
|
-
"pkg/tts-.gem",
|
28
|
-
"pkg/tts-0.0.1.gem",
|
29
27
|
"spec/tts_spec.rb",
|
30
28
|
"tts.gemspec"
|
31
29
|
]
|
32
30
|
s.homepage = "http://github.com/c2h2/tts"
|
33
31
|
s.licenses = ["MIT"]
|
34
32
|
s.require_paths = ["lib"]
|
35
|
-
s.rubygems_version = "1.8.
|
33
|
+
s.rubygems_version = "1.8.23"
|
36
34
|
s.summary = "a text to speech file tool"
|
37
35
|
|
38
36
|
if s.respond_to? :specification_version then
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tts
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-01-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '2.6'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '2.6'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: bundler
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ~>
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: 1.0.0
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.0.0
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: jeweler
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ~>
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: 1.6.2
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.6.2
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: rcov
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,7 +69,12 @@ dependencies:
|
|
54
69
|
version: '0'
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
58
78
|
description: easy way to generate a voice file based on text prvoided.
|
59
79
|
email: yiling.cao@gmail.com
|
60
80
|
executables: []
|
@@ -70,8 +90,6 @@ files:
|
|
70
90
|
- Rakefile
|
71
91
|
- VERSION
|
72
92
|
- lib/tts.rb
|
73
|
-
- pkg/tts-.gem
|
74
|
-
- pkg/tts-0.0.1.gem
|
75
93
|
- spec/tts_spec.rb
|
76
94
|
- tts.gemspec
|
77
95
|
homepage: http://github.com/c2h2/tts
|
@@ -89,7 +107,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
89
107
|
version: '0'
|
90
108
|
segments:
|
91
109
|
- 0
|
92
|
-
hash:
|
110
|
+
hash: -1651896032879588070
|
93
111
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
112
|
none: false
|
95
113
|
requirements:
|
@@ -98,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
98
116
|
version: '0'
|
99
117
|
requirements: []
|
100
118
|
rubyforge_project:
|
101
|
-
rubygems_version: 1.8.
|
119
|
+
rubygems_version: 1.8.23
|
102
120
|
signing_key:
|
103
121
|
specification_version: 3
|
104
122
|
summary: a text to speech file tool
|
data/pkg/tts-.gem
DELETED
Binary file
|
data/pkg/tts-0.0.1.gem
DELETED
Binary file
|