cerecvoice2019 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +1 -0
- data.tar.gz.sig +2 -0
- data/lib/cerecvoice2019.rb +91 -0
- metadata +90 -0
- metadata.gz.sig +0 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f8b16313e9c5493cf1ef344f45d2d319e8da00de1929d678abd6e8398f77feb4
|
4
|
+
data.tar.gz: eb9314639424d0c8cf9fc7e1a407543eb461ee1b3c884e6be2b17d17a9e14c60
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f95ddec75d624123d6ac0b7e1f54abb5a540bf4ef27d0a0bf647bfb0dfeab6b28cb5faddbf788984969eb7eb844c74bf4a5c572215e9bb5354bc3846d0883e93
|
7
|
+
data.tar.gz: a637a448554ad42e8d43df2fbebb012699d2a40a15d878429f4d59a8773f0ca7ed41450af9d3b32320a36fbecdd8d7ae7e037cf0dd707690339721df1cc4a724
|
checksums.yaml.gz.sig
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
���2�"�o���ρ�t�ڶ�s��c��^n���|$��� �=�����`lS�[ ܅9�����|������<d6M��ۓ�0�]}�������C�������M�i�чH��b����xR���4���B�,�jZ WK��?��Ni��{�,�W?;��8�@��X��+yW����s������a1�,=L��,�\��ڀ�gui?�Y�%j[ �@�������)n��jlR_a=�T9����3Ρ�۲����$
|
data.tar.gz.sig
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# file: cerecvoice2019.rb
|
4
|
+
|
5
|
+
require 'digest/md5'
|
6
|
+
require 'rxfhelper'
|
7
|
+
|
8
|
+
|
9
|
+
# English voices
|
10
|
+
# --------------
|
11
|
+
#
|
12
|
+
# England: Claire (Lancashire), Giles, Jack, Jess, Lauren, Sarah,
|
13
|
+
# Sue (Black Country), William
|
14
|
+
# Ireland: Caitlin
|
15
|
+
# Scotland: Dodo, Heather, Kirsty, Stuart
|
16
|
+
#
|
17
|
+
|
18
|
+
class Cerecvoice2019Error < Exception
|
19
|
+
end
|
20
|
+
|
21
|
+
class Cerecvoice2019
|
22
|
+
include RXFHelperModule
|
23
|
+
using ColouredText
|
24
|
+
|
25
|
+
def initialize(accountid: nil, password: nil, voice: 'Heather', config: {},
|
26
|
+
cache_filepath: 'cache',
|
27
|
+
url: 'https://cerevoice.com/rest/rest_1_1.php', debug: false)
|
28
|
+
|
29
|
+
@config = ({
|
30
|
+
'method' => 'speakExtended',
|
31
|
+
'accountID' => accountid,
|
32
|
+
'password' => password,
|
33
|
+
'voice' => voice,
|
34
|
+
'audioFormat' => 'ogg',
|
35
|
+
'sampleRate' => '48000',
|
36
|
+
'metadata' => 'True',
|
37
|
+
'audio3D' => 'True'
|
38
|
+
}).merge config
|
39
|
+
|
40
|
+
@url, @cache_filepath, @debug = url, cache_filepath, debug
|
41
|
+
|
42
|
+
if @config['accountID'].nil? or @config['password'].nil? then
|
43
|
+
raise Cerecvoice2019Error, 'invalid accountID or password'
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
def tts(text='', voice=@config['voice'], out: 'output.' + @config['audioFormat'])
|
49
|
+
|
50
|
+
|
51
|
+
audiofile_out =- out
|
52
|
+
|
53
|
+
raise Cerecvoice2019Error, 'text empty' if text.empty?
|
54
|
+
|
55
|
+
FileUtils.mkdir_p @cache_filepath
|
56
|
+
|
57
|
+
h = Digest::MD5.new << text + voice
|
58
|
+
filename = File.join(@cache_filepath, h.to_s + '.'+ @config['audioFormat'])
|
59
|
+
|
60
|
+
|
61
|
+
# attempts to find the audio file from a local cache instead of
|
62
|
+
# making a relatively expensive request through the web API
|
63
|
+
|
64
|
+
if not File.exists? filename then
|
65
|
+
|
66
|
+
@config.merge!('text' => CGI.escape(text), 'voice' => voice)
|
67
|
+
url = @url + '?' + @config.map {|x| x.join('=')}.join('&')
|
68
|
+
puts ('url: ' + url.inspect).debug if @debug
|
69
|
+
xml = open(url).read
|
70
|
+
puts ('xml: ' + xml.inspect).debug if @debug
|
71
|
+
|
72
|
+
doc = Rexle.new xml
|
73
|
+
audio_url = doc.root.text('fileUrl')
|
74
|
+
puts ('audio_url: ' + audio_url.inspect).debug if @debug
|
75
|
+
|
76
|
+
|
77
|
+
puts ('writing file: ' + filename.inspect).debug if @debug
|
78
|
+
|
79
|
+
File.open(filename, "wb") do |saved_file|
|
80
|
+
# the following "open" is provided by open-uri
|
81
|
+
open(audio_url) {|read_file| saved_file.write(read_file.read) }
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
85
|
+
|
86
|
+
FileUtils.cp filename, audiofile_out
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
|
metadata
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cerecvoice2019
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.9.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- James Robertson
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTkxMDIwMTIzNzQ0WhcN
|
15
|
+
MjAxMDE5MTIzNzQ0WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCz6C+y
|
17
|
+
6wFCCvUqbuB7H68hWtHH90U3OjRgghIkPe3UitLbcIg/57N08/UCrjdtTCdBUfhT
|
18
|
+
OuvAYHUuJDYYoc56Wvu6frwHPaslB1IEy7wwu5cpd4du2tPjIZ5O4FHm1b1wN/EA
|
19
|
+
+jVExkd7hdIpH/7VKGFl8dw97wQcQhv8VxcQK7UFDrRfZADeHVId/949aHOF7LAP
|
20
|
+
KKPFSq4Bh6+hSBMr++5rPanTdJp6OmI7NuNzZtONzUvP0qu6Mxq0HQUu5Bvpvjbf
|
21
|
+
uOxZHkHHkiJoRH9IUyb+07956f+kmMBsEHsXAmpLfSO8Trtzri+OPcKeKERWsOBc
|
22
|
+
tM4kHlFcTo43Yu5j34DhyMQtOAeCJftxYWMqz+03gIy51XDWC2ornLxfqUF5vVUm
|
23
|
+
foGlVCC760Y5dYVzl1P1reeVANYXHrPdigusowNNYqmWOg5XaCM82z5ahj5CpMoY
|
24
|
+
Fn17RQQUJgVLDPbmFCDhKRsLH8xGaU+0f5cF/8QuRNza96LRfuyN+jHjruUCAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUB0SbvkWC
|
26
|
+
r1ZThGUpjZodSR8MMXowJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
|
+
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEAc897LK21e6dI8Q7jTEahOUSDM7XCSS96cUXYosJU
|
29
|
+
byF68UKvCImDUdtvBWdDSlTyqQ/AK/ZHt5TBg/hNXpQLS5Kpfz/hXuPOY7+ItyoV
|
30
|
+
GHUr9G3Lb8AuhuSuDZk7oODznIHokktnfNqS/IGZQfcwDStwZeutTSoUfW5UdsYC
|
31
|
+
UBJAZNy2cPFnKGJtvYkGbipnrF4jyquw5E95F8oQkYkkw4x9G+fGQJ+g1MNxMvgt
|
32
|
+
SeOcoucJeYt4nuCOG4W4QPGYt9+ZFSa5R4MZ+s8UmvkUv6BFa40kB1iw+YibnJI6
|
33
|
+
BibhJ5m6IgtYvP66oWw7PhFuJ96H/Xi8qnQTpdjeN/Yng6JEb9scYR63OZOTnEDo
|
34
|
+
vFjbnF4ZZvoUuA3XCIpfcn3tDjBT8MBa4SL4v5A2W5WuGLybKiHdfzuek4GoQrcC
|
35
|
+
otDtZWH5PiMo8YNpkjbLacTOBqdEE9sfYRWqxO2Au3Dh+IjGiH+4gvTKt9uFJ+rv
|
36
|
+
QNWsS+OhIQjXcOvPMxWb8r6p
|
37
|
+
-----END CERTIFICATE-----
|
38
|
+
date: 2019-10-20 00:00:00.000000000 Z
|
39
|
+
dependencies:
|
40
|
+
- !ruby/object:Gem::Dependency
|
41
|
+
name: rxfhelper
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0.9'
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 0.9.4
|
50
|
+
type: :runtime
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - "~>"
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0.9'
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: 0.9.4
|
60
|
+
description:
|
61
|
+
email: james@jamesrobertson.eu
|
62
|
+
executables: []
|
63
|
+
extensions: []
|
64
|
+
extra_rdoc_files: []
|
65
|
+
files:
|
66
|
+
- lib/cerecvoice2019.rb
|
67
|
+
homepage: https://github.com/jrobertson/cerecvoice2019
|
68
|
+
licenses:
|
69
|
+
- MIT
|
70
|
+
metadata: {}
|
71
|
+
post_install_message:
|
72
|
+
rdoc_options: []
|
73
|
+
require_paths:
|
74
|
+
- lib
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
requirements: []
|
86
|
+
rubygems_version: 3.0.3
|
87
|
+
signing_key:
|
88
|
+
specification_version: 4
|
89
|
+
summary: cerecvoice2019
|
90
|
+
test_files: []
|
metadata.gz.sig
ADDED
Binary file
|