ivona 0.0.1

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/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in ivona.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,17 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ ivona (0.0.1)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ rake (10.1.0)
10
+
11
+ PLATFORMS
12
+ ruby
13
+
14
+ DEPENDENCIES
15
+ bundler
16
+ ivona!
17
+ rake
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 bornfree
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1 @@
1
+ Ruby client to talk to Ivona Speechcloud
data/ivona.gemspec ADDED
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'ivona/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "ivona"
8
+ spec.version = Ivona::VERSION
9
+ spec.authors = ["bornfree"]
10
+ spec.email = ["harsha.xg@gmail.com"]
11
+ spec.description = %q{Ruby client to talk to ivona speech cloud / Repackaged from the speechcloud gem}
12
+ spec.summary = %q{Original credits: Sean Holden for the speechcloud gem}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler"
22
+ spec.add_development_dependency "rake"
23
+ end
data/lib/ivona.rb ADDED
@@ -0,0 +1,14 @@
1
+ BASE_URL = 'https://secure.ivona.com/api/saas/rest'
2
+ require 'digest/md5'
3
+
4
+ module Ivona
5
+ class << self; end
6
+ end
7
+
8
+ require 'ivona/version'
9
+ require 'ivona/authorization'
10
+ require 'ivona/speech_generation'
11
+ require 'ivona/pronunciation_rules'
12
+ require 'ivona/additional_information'
13
+ require 'ivona/get_md5'
14
+ require 'ivona/configuration'
@@ -0,0 +1,54 @@
1
+ module Ivona::AdditionalInfo
2
+ class << self
3
+ # Check the characters price for a specified speech parameters (text and voice pair)
4
+ def check_text_price(voice_id, text)
5
+ token = Ivona::Auth.get_token
6
+ md5 = Ivona::GetMd5.formula(token)
7
+ params = [ "token=#{token}",
8
+ "md5=#{md5}",
9
+ "text=#{text}",
10
+ "voiceId=#{voice_id}" ]
11
+ params = params.join('&')
12
+ HTTParty.get("#{BASE_URL}/textprice?#{params}")
13
+ end
14
+
15
+ # Show user TTS SaaS agreement data (this method will result in an error if there isn’t a SaaS agreement currently active for user)
16
+ def get_user_agreement_data
17
+ token = Ivona::Auth.get_token
18
+ md5 = Ivona::GetMd5.formula(token)
19
+ params = [ "token=#{token}",
20
+ "md5=#{md5}" ]
21
+ params = params.join('&')
22
+ HTTParty.get("#{BASE_URL}/agreementdata?#{params}")
23
+ end
24
+
25
+ # Get all available voices list
26
+ def list_voices
27
+ token = Ivona::Auth.get_token
28
+ md5 = Ivona::GetMd5.formula(token)
29
+ params = [ "token=#{token}",
30
+ "md5=#{md5}" ]
31
+ params = params.join('&')
32
+ HTTParty.get("#{BASE_URL}/voices?#{params}")
33
+ end
34
+
35
+ # Get single voice data
36
+ def get_voice_data( voice_id )
37
+ token = Ivona::Auth.get_token
38
+ md5 = Ivona::GetMd5.formula(token)
39
+ params = [ "token=#{token}",
40
+ "md5=#{md5}" ]
41
+ params = params.join('&')
42
+ HTTParty.get("#{BASE_URL}/voices/#{voice_id}?#{params}")
43
+ end
44
+
45
+ # Get all available codecs list
46
+ def list_codecs
47
+ token = Ivona::Auth.get_token
48
+ params = [ "token=#{token}",
49
+ "md5=#{Ivona::GetMd5.formula(token)}" ]
50
+ params = params.join('&')
51
+ HTTParty.get("#{BASE_URL}/codecs?#{params}")
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,18 @@
1
+ require 'httparty'
2
+
3
+ module Ivona::Auth
4
+ class << self
5
+ # Make a request for a token
6
+ def get_token
7
+ email = Ivona::Config.email
8
+ options = { :body => "email=#{email}" }
9
+ HTTParty.post("#{BASE_URL}/tokens/", options)
10
+ end
11
+
12
+ # Verify that token and md5 are legit. A response of 1 confirms that they are.
13
+ def check_token(token)
14
+ params = "token=#{token}&md5=#{Ivona::GetMd5.formula(token)}"
15
+ HTTParty.get("#{BASE_URL}/tokens?#{params}")
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,5 @@
1
+ module Ivona::Config
2
+ class << self
3
+ attr_accessor :api_key, :email, :voice_id, :codec_id
4
+ end
5
+ end
@@ -0,0 +1,15 @@
1
+ module Ivona::GetMd5
2
+ class << self
3
+ # Helper method to transform a string to MD5
4
+ def to_md5(a_string)
5
+ Digest::MD5.hexdigest(a_string)
6
+ end
7
+
8
+ # Formula for md5 param is: md5( md5( api_key ) + token )
9
+ def formula(token)
10
+ api_key = Ivona::Config.api_key
11
+ api_key_as_md5 = to_md5( api_key )
12
+ to_md5( api_key_as_md5 + token )
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,58 @@
1
+ module Ivona::Pronunciation
2
+ class << self
3
+ # Get the data for all user’s pronunciation rules for selected language
4
+ # lang_id example: 'gb'
5
+ def list_pronunciation_rules( lang_id )
6
+ token = Ivona::Auth.get_token
7
+ md5 = Ivona::GetMd5.formula(token)
8
+ params = [ "token=#{token}",
9
+ "md5=#{md5}",
10
+ "langId=#{lang_id}" ]
11
+ params = params.join('&')
12
+ HTTParty.get("#{BASE_URL}/pronunciationrules?#{params}")
13
+ end
14
+
15
+ # Add any number of pronunciation rules for selected language into user’s account
16
+ # lang_id example: 'en'
17
+ # stat example: 1 == case insensitive, 2 == case sensitive
18
+ # key (word to change) example: 'bcn'
19
+ # value (word it will change to) example: 'bacon'
20
+ def add_pronunciation_rule( lang_id, stat, key, value )
21
+ token = Ivona::Auth.get_token
22
+ md5 = Ivona::GetMd5.formula(token)
23
+ params = { token:token,
24
+ md5:md5,
25
+ langId:lang_id,
26
+ stat:stat,
27
+ key:key,
28
+ value:value }
29
+ HTTParty.post("#{BASE_URL}/pronunciationrules", {:body=>params})
30
+ end
31
+
32
+ # Modify any number of user’s pronunciation rules for selected language
33
+ # id is the rule identifier. Could be aquired by using the list_pronunciation_rules method
34
+ def modify_pronunciation_rule( id, lang_id, stat, key, value )
35
+ token = Ivona::Auth.get_token
36
+ md5 = Ivona::GetMd5.formula(token)
37
+ params = [ "token=#{token}",
38
+ "md5=#{md5}",
39
+ "langId=#{lang_id}",
40
+ "stat=#{stat}",
41
+ "key=#{key}",
42
+ "value=#{value}" ]
43
+ params = params.join('&')
44
+ HTTParty.put("#{BASE_URL}/pronunciationrules/#{id}?#{params}")
45
+ end
46
+
47
+ # Delete any number of user’s pronunciation rules for selected language.
48
+ def delete_pronunciation_rule( id, lang_id )
49
+ token = Ivona::Auth.get_token
50
+ md5 = Ivona::GetMd5.formula(token)
51
+ params = [ "token=#{token}",
52
+ "md5=#{md5}",
53
+ "langId=#{lang_id}" ]
54
+ params = params.join('&')
55
+ HTTParty.delete("#{BASE_URL}/pronunciationrules/#{id}?#{params}")
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,60 @@
1
+ module Ivona::Speech
2
+ class << self
3
+ # Helper. Gathers params for the create_speech_file method defined below.
4
+ def get_speech_file_params(text, codec_id='mp3/22050' )
5
+ token = Ivona::Auth.get_token
6
+ md5 = Ivona::GetMd5.formula(token)
7
+ content_type = 'text/plain'
8
+ voice_id = Ivona::Config.voice_id
9
+ codec_id = Ivona::Config.codec_id
10
+ { token: token,
11
+ md5: md5,
12
+ text: text,
13
+ contentType: content_type,
14
+ voiceId: voice_id,
15
+ codecId: codec_id }
16
+ end
17
+
18
+ # Get a url for a speech file generated from uploaded text.
19
+ def create_speech_file( text )
20
+ HTTParty.post("#{BASE_URL}/speechfiles", {:body=>get_speech_file_params( text )})
21
+ end
22
+
23
+ # Get a url for a speech file generated from uploaded text and for a text file with speech
24
+ # marks describing the positions of the text entities in a speech file.
25
+ def create_speech_file_with_marks( text )
26
+ HTTParty.post("#{BASE_URL}/speechfileswithmarks", {:body=>get_speech_file_params( text )})
27
+ end
28
+
29
+ # Delete a single speech file data
30
+ # Result: success (int: 0/1) – success (1) or failure (0) of the operation
31
+ def delete_speech_file( file_id )
32
+ token = Ivona::Auth.get_token
33
+ md5 = Ivona::GetMd5.formula(token)
34
+ params = [ "token=#{token}",
35
+ "md5=#{md5}" ]
36
+ params = params.join('&')
37
+ HTTParty.delete("#{BASE_URL}/speechfiles/#{file_id}?#{params}")
38
+ end
39
+
40
+ # Get a list of all active speech files for the current user
41
+ def list_speech_files
42
+ token = Ivona::Auth.get_token
43
+ md5 = Ivona::GetMd5.formula(token)
44
+ params = [ "token=#{token}",
45
+ "md5=#{md5}" ]
46
+ params = params.join('&')
47
+ HTTParty.get("#{BASE_URL}/speechfiles?#{params}")
48
+ end
49
+
50
+ # Getting data of single utterance
51
+ def get_speech_file_data( file_id )
52
+ token = Ivona::Auth.get_token
53
+ md5 = Ivona::GetMd5.formula(token)
54
+ params = [ "token=#{token}",
55
+ "md5=#{md5}" ]
56
+ params = params.join('&')
57
+ HTTParty.get("#{BASE_URL}/speechfiles/#{file_id}?#{params}")
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,3 @@
1
+ module Ivona
2
+ VERSION = "0.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,92 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ivona
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - bornfree
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-09-30 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ prerelease: false
16
+ type: :development
17
+ name: bundler
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
24
+ requirement: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ prerelease: false
32
+ type: :development
33
+ name: rake
34
+ version_requirements: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirement: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ description: Ruby client to talk to ivona speech cloud / Repackaged from the speechcloud
47
+ gem
48
+ email:
49
+ - harsha.xg@gmail.com
50
+ executables: []
51
+ extensions: []
52
+ extra_rdoc_files: []
53
+ files:
54
+ - Gemfile
55
+ - Gemfile.lock
56
+ - LICENSE.txt
57
+ - README.md
58
+ - ivona.gemspec
59
+ - lib/ivona.rb
60
+ - lib/ivona/additional_information.rb
61
+ - lib/ivona/authorization.rb
62
+ - lib/ivona/configuration.rb
63
+ - lib/ivona/get_md5.rb
64
+ - lib/ivona/pronunciation_rules.rb
65
+ - lib/ivona/speech_generation.rb
66
+ - lib/ivona/version.rb
67
+ homepage: ''
68
+ licenses:
69
+ - MIT
70
+ post_install_message:
71
+ rdoc_options: []
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ requirements: []
87
+ rubyforge_project:
88
+ rubygems_version: 1.8.25
89
+ signing_key:
90
+ specification_version: 3
91
+ summary: ! 'Original credits: Sean Holden for the speechcloud gem'
92
+ test_files: []