win32-sapi 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +20 -0
- data/MANIFEST +8 -0
- data/README +69 -0
- data/Rakefile +22 -0
- data/lib/win32/sapi5.rb +129 -0
- data/test/tc_sapi5.rb +103 -0
- data/win32-sapi.gemspec +23 -0
- metadata +59 -0
data/CHANGES
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
== 0.1.4 - 29-Jul-2007
|
2
|
+
* Added a Rakefile with tasks for installation and testing.
|
3
|
+
* Removed the install.rb file. The Rakefile now handles installation.
|
4
|
+
* Removed the doc/sapi5.txt file. It was merged into the README.
|
5
|
+
* Some doc updates.
|
6
|
+
|
7
|
+
== 0.1.3 - 9-Nov-2005
|
8
|
+
* Fixed SpInProcRecognizer class name.
|
9
|
+
|
10
|
+
== 0.1.2 - 17-Jun-2005
|
11
|
+
* Added a gemspec.
|
12
|
+
* Some minor updates to the README and test file.
|
13
|
+
* Removed the doc/sapi5.rd file. Made the doc/sapi5.txt file roc friendly.
|
14
|
+
|
15
|
+
== 0.1.1 - 1-Mar-2005
|
16
|
+
* Moved the 'examples' directory to the toplevel directory.
|
17
|
+
* Made the CHANGES and README files rdoc friendly.
|
18
|
+
|
19
|
+
== 0.1.0 - 12-Oct-2004
|
20
|
+
* Initial release
|
data/MANIFEST
ADDED
data/README
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
== Description
|
2
|
+
This is a Ruby interface to the Microsoft Speech API, 5.1
|
3
|
+
|
4
|
+
== Prerequisites
|
5
|
+
The Microsoft Speech API 5.1. It can be downloaded for free from
|
6
|
+
http://www.microsoft.com/speech.
|
7
|
+
|
8
|
+
Ruby 1.8.2 or later.
|
9
|
+
|
10
|
+
== Installation
|
11
|
+
rake test (optional)
|
12
|
+
rake install (non-gem) or rake install_gem (gem)
|
13
|
+
|
14
|
+
== Synopsis
|
15
|
+
require 'win32/sapi5'
|
16
|
+
include Win32
|
17
|
+
|
18
|
+
v = SpVoice.new
|
19
|
+
v.Speak("Shall we play a game?")
|
20
|
+
|
21
|
+
== Constants
|
22
|
+
SAPI5::VERSION
|
23
|
+
The current version of this package.
|
24
|
+
|
25
|
+
== Notes
|
26
|
+
This module is a simple interface to the Microsoft Speech API 5.1. There
|
27
|
+
are interfaces to all of the Automation classes that this API consists of.
|
28
|
+
Each class is a subclass of the SAPI5 class, which is in turn a subclass
|
29
|
+
of WIN32OLE. With your object you can then call the available methods for
|
30
|
+
that particular Automation class.
|
31
|
+
|
32
|
+
This documentation won't offer the complete documentation for every method.
|
33
|
+
Instead, download the Microsoft Speech API 5.1 documentation (a .chm file)
|
34
|
+
and read the part that covers 'Automation'.
|
35
|
+
|
36
|
+
== Known Bugs
|
37
|
+
None known. Any bugs should be reported on the project page at
|
38
|
+
http://rubyforge.org/projects/win32utils.
|
39
|
+
|
40
|
+
== Acknowledgements
|
41
|
+
Thanks go to Jouke Visser for his Win32::SAPI5 Perl module, on which this
|
42
|
+
library is based.
|
43
|
+
|
44
|
+
== Support
|
45
|
+
The Microsoft SAPI 5.1 SDK is supported on news://microsoft.public.speech_tech.sdk
|
46
|
+
|
47
|
+
== Future Plans
|
48
|
+
Suggestions welcome.
|
49
|
+
|
50
|
+
== License
|
51
|
+
Ruby's
|
52
|
+
|
53
|
+
== Copyright
|
54
|
+
(C) 2003-2007 Daniel J. Berger
|
55
|
+
All Rights Reserved
|
56
|
+
|
57
|
+
== Warranty
|
58
|
+
This package is provided "as is" and without any express or
|
59
|
+
implied warranties, including, without limitation, the implied
|
60
|
+
warranties of merchantability and fitness for a particular purpose.
|
61
|
+
|
62
|
+
== Author(s)
|
63
|
+
Daniel J. Berger
|
64
|
+
djberg96 at gmail dot com
|
65
|
+
imperator on IRC (irc.freenode.net)
|
66
|
+
|
67
|
+
Park Heesob
|
68
|
+
phasis at nownuri dot net
|
69
|
+
phasis68 on IRC (irc.freenode.net)
|
data/Rakefile
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
|
4
|
+
desc "Install the win32-sapi package (non-gem)"
|
5
|
+
task :install do
|
6
|
+
dest = File.join(Config::CONFIG['sitelibdir'], 'win32')
|
7
|
+
Dir.mkdir(dest) unless File.exists? dest
|
8
|
+
cp 'lib/win32/sapi5.rb', dest, :verbose => true
|
9
|
+
end
|
10
|
+
|
11
|
+
desc "Install the win32-sapi package as a gem"
|
12
|
+
task :install_gem do
|
13
|
+
ruby 'win32-sapi.gemspec'
|
14
|
+
file = Dir["*.gem"].first
|
15
|
+
sh "gem install #{file}"
|
16
|
+
end
|
17
|
+
|
18
|
+
Rake::TestTask.new do |t|
|
19
|
+
t.libs << 'lib'
|
20
|
+
t.warning = true
|
21
|
+
t.test_files = FileList['test/tc*']
|
22
|
+
end
|
data/lib/win32/sapi5.rb
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
require "win32ole"
|
2
|
+
|
3
|
+
# The Win32 module serves as a namespace only.
|
4
|
+
module Win32
|
5
|
+
|
6
|
+
#--
|
7
|
+
# The values provided in the various initializers come from the Windows
|
8
|
+
# registry. Look in HKLM\Software\Classes\CLSID.
|
9
|
+
#++
|
10
|
+
|
11
|
+
# An abstract base class for the SAPI automation classes
|
12
|
+
class SAPI5 < WIN32OLE
|
13
|
+
VERSION = '0.1.4'
|
14
|
+
end
|
15
|
+
|
16
|
+
class SpAudioFormat < SAPI5
|
17
|
+
def initialize
|
18
|
+
super("{9EF96870-E160-4792-820D-48CF0649E4EC}")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class SpCustomStream < SAPI5
|
23
|
+
def initialize
|
24
|
+
super("{8DBEF13F-1948-4aa8-8CF0-048EEBED95D8}")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class SpFileStream < SAPI5
|
29
|
+
def initialize
|
30
|
+
super("{947812B3-2AE1-4644-BA86-9E90DED7EC91}")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class SpInProcRecoContext < SAPI5
|
35
|
+
def initialize
|
36
|
+
super("{73AD6842-ACE0-45E8-A4DD-8795881A2C2A}")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
class SpInProcRecognizer < SAPI5
|
41
|
+
def initialize
|
42
|
+
super("{41B89B6B-9399-11D2-9623-00C04F8EE628}")
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
class SpLexicon < SAPI5
|
47
|
+
def initialize
|
48
|
+
super("{0655E396-25D0-11D3-9C26-00C04F8EF87C}")
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
class SpMemoryStream < SAPI5
|
53
|
+
def initialize
|
54
|
+
super("{5FB7EF7D-DFF4-468a-B6B7-2FCBD188F994}")
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
class SpMMAudioIn < SAPI5
|
59
|
+
def initialize
|
60
|
+
super("{CF3D2E50-53F2-11D2-960C-00C04F8EE628}")
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
class SpMMAudioOut < SAPI5
|
65
|
+
def initialize
|
66
|
+
super("{A8C680EB-3D32-11D2-9EE7-00C04F797396}")
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
class SpObjectToken < SAPI5
|
71
|
+
def initialize
|
72
|
+
super("{EF411752-3736-4CB4-9C8C-8EF4CCB58EFE}")
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
class SpObjectTokenCategory < SAPI5
|
77
|
+
def initialize
|
78
|
+
super("{A910187F-0C7A-45AC-92CC-59EDAFB77B53}")
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
class SpPhoneConverter < SAPI5
|
83
|
+
def initialize
|
84
|
+
super("{9185F743-1143-4C28-86B5-BFF14F20E5C8}")
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
class SpPhraseInfoBuilder < SAPI5
|
89
|
+
def initialize
|
90
|
+
super("{C23FC28D-C55F-4720-8B32-91F73C2BD5D1}")
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
class SpSharedRecoContext < SAPI5
|
95
|
+
def initialize
|
96
|
+
super("{47206204-5ECA-11D2-960F-00C04F8EE628}")
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
class SpSharedRecognizer < SAPI5
|
101
|
+
def initialize
|
102
|
+
super("{3BEE4890-4FE9-4A37-8C1E-5E7E12791C1F}")
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
class SpTextSelectionInformation < SAPI5
|
107
|
+
def initialize
|
108
|
+
super("{0F92030A-CBFD-4AB8-A164-FF5985547FF6}")
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
class SpUnCompressedLexicon < SAPI5
|
113
|
+
def initialize
|
114
|
+
super("{C9E37C15-DF92-4727-85D6-72E5EEB6995A}")
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
class SpVoice < SAPI5
|
119
|
+
def initialize
|
120
|
+
super("{96749377-3391-11D2-9EE3-00C04F797396}")
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
class SpWaveFormatEx < SAPI5
|
125
|
+
def initialize
|
126
|
+
super("{C79A574C-63BE-44b9-801F-283F87F898BE}")
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
data/test/tc_sapi5.rb
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
#############################################################################
|
2
|
+
# tc_sapi5.rb
|
3
|
+
#
|
4
|
+
# Test suite for the sapi5 class. For now, we're simply going to test that
|
5
|
+
# the constructors work without incident. There are simply too many methods
|
6
|
+
# for me to test. If the constructor works, the methods should be
|
7
|
+
# available.
|
8
|
+
#
|
9
|
+
# I may eventually split each class into its own test file.
|
10
|
+
#
|
11
|
+
# You should run this test case via the 'rake test' Rake task.
|
12
|
+
#############################################################################
|
13
|
+
require "win32/sapi5"
|
14
|
+
require "test/unit"
|
15
|
+
include Win32
|
16
|
+
|
17
|
+
class TC_Win32_SAPI5 < Test::Unit::TestCase
|
18
|
+
def setup
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_version
|
22
|
+
assert_equal("0.1.4", SAPI5::VERSION)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_SpAudioFormat
|
26
|
+
assert_nothing_raised{ SpAudioFormat.new }
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_SpCustomStream
|
30
|
+
assert_nothing_raised{ SpCustomStream.new }
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_SpFileStream
|
34
|
+
assert_nothing_raised{ SpFileStream.new }
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_SpInProcRecoContext
|
38
|
+
assert_nothing_raised{ SpInProcRecoContext.new }
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_SpInProcRecognizer
|
42
|
+
assert_nothing_raised{ SpInProcRecognizer.new }
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_SpLexicon
|
46
|
+
assert_nothing_raised{ SpLexicon.new }
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_SpMemoryStream
|
50
|
+
assert_nothing_raised{ SpMemoryStream.new }
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_SpMMAudioIn
|
54
|
+
assert_nothing_raised{ SpMMAudioIn.new }
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_SpMMAudioOut
|
58
|
+
assert_nothing_raised{ SpMMAudioOut.new }
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_SpObjectToken
|
62
|
+
assert_nothing_raised{ SpObjectToken.new }
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_SpObjectTokenCategory
|
66
|
+
assert_nothing_raised{ SpObjectTokenCategory.new }
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_SpPhoneConverter
|
70
|
+
assert_nothing_raised{ SpPhoneConverter.new }
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_SpPhraseInfoBuilder
|
74
|
+
assert_nothing_raised{ SpPhraseInfoBuilder.new }
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_SpSharedRecoContext
|
78
|
+
assert_nothing_raised{ SpSharedRecoContext.new }
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_SpSharedRecognizer
|
82
|
+
assert_nothing_raised{ SpSharedRecognizer.new }
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_SpTextSelectionInformation
|
86
|
+
assert_nothing_raised{ SpTextSelectionInformation.new }
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_SpUnCompressedLexicon
|
90
|
+
assert_nothing_raised{ SpUnCompressedLexicon.new }
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_SpVoice
|
94
|
+
assert_nothing_raised{ SpVoice.new }
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_SpWaveFormatEx
|
98
|
+
assert_nothing_raised{ SpWaveFormatEx.new }
|
99
|
+
end
|
100
|
+
|
101
|
+
def teardown
|
102
|
+
end
|
103
|
+
end
|
data/win32-sapi.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
|
3
|
+
spec = Gem::Specification.new do |gem|
|
4
|
+
gem.name = "win32-sapi"
|
5
|
+
gem.version = "0.1.4"
|
6
|
+
gem.author = "Daniel J. Berger"
|
7
|
+
gem.email = "djberg96@gmail.com"
|
8
|
+
gem.homepage = "http://www.rubyforge.org/projects/win32utils"
|
9
|
+
gem.platform = Gem::Platform::RUBY
|
10
|
+
gem.summary = "An interface to the MS SAPI (Sound API) library."
|
11
|
+
gem.description = "An interface to the MS SAPI (Sound API) library."
|
12
|
+
gem.test_file = "test/tc_sapi5.rb"
|
13
|
+
gem.has_rdoc = true
|
14
|
+
gem.files = Dir['lib/win32/*.rb'] + Dir['[A-Z]*'] + Dir['test/*']
|
15
|
+
gem.files.reject! { |fn| fn.include? "CVS" }
|
16
|
+
gem.require_path = "lib"
|
17
|
+
gem.extra_rdoc_files = ['README', 'CHANGES', 'MANIFEST']
|
18
|
+
end
|
19
|
+
|
20
|
+
if $0 == __FILE__
|
21
|
+
Gem.manage_gems
|
22
|
+
Gem::Builder.new(spec).build
|
23
|
+
end
|
metadata
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.9.2
|
3
|
+
specification_version: 1
|
4
|
+
name: win32-sapi
|
5
|
+
version: !ruby/object:Gem::Version
|
6
|
+
version: 0.1.4
|
7
|
+
date: 2007-07-30 00:00:00 -06:00
|
8
|
+
summary: An interface to the MS SAPI (Sound API) library.
|
9
|
+
require_paths:
|
10
|
+
- lib
|
11
|
+
email: djberg96@gmail.com
|
12
|
+
homepage: http://www.rubyforge.org/projects/win32utils
|
13
|
+
rubyforge_project:
|
14
|
+
description: An interface to the MS SAPI (Sound API) library.
|
15
|
+
autorequire:
|
16
|
+
default_executable:
|
17
|
+
bindir: bin
|
18
|
+
has_rdoc: true
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
24
|
+
version:
|
25
|
+
platform: ruby
|
26
|
+
signing_key:
|
27
|
+
cert_chain:
|
28
|
+
post_install_message:
|
29
|
+
authors:
|
30
|
+
- Daniel J. Berger
|
31
|
+
files:
|
32
|
+
- lib/win32/sapi5.rb
|
33
|
+
- CHANGES
|
34
|
+
- CVS
|
35
|
+
- examples
|
36
|
+
- lib
|
37
|
+
- MANIFEST
|
38
|
+
- Rakefile
|
39
|
+
- README
|
40
|
+
- test
|
41
|
+
- win32-sapi.gemspec
|
42
|
+
- test/CVS
|
43
|
+
- test/tc_sapi5.rb
|
44
|
+
test_files:
|
45
|
+
- test/tc_sapi5.rb
|
46
|
+
rdoc_options: []
|
47
|
+
|
48
|
+
extra_rdoc_files:
|
49
|
+
- README
|
50
|
+
- CHANGES
|
51
|
+
- MANIFEST
|
52
|
+
executables: []
|
53
|
+
|
54
|
+
extensions: []
|
55
|
+
|
56
|
+
requirements: []
|
57
|
+
|
58
|
+
dependencies: []
|
59
|
+
|