ivona 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []