h2g_ajaxchat-plugin-voicerecognition 0.1.0

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 7a6aa423ade323551eb4e34f00517b50cd464ba0514cd6a29d045359ba639ec1
4
+ data.tar.gz: 3cc106098653a7c2a3bf9e952ffb15f553dd3163957d7a0cc79ae33710f8e581
5
+ SHA512:
6
+ metadata.gz: cb0ffd83df17944526f60e35bb886d09e7a4f203ce5bf193296a31872d9fa223747ac93ae3448f3e472cba2dd82829e50fd9d55069ae0ccb861bf69e29c2fdaa
7
+ data.tar.gz: cbfb7163e55e6921e5d82005b0d23ed41aeaeef51578d2263b8b575b4bdd6cf35d29e49027bcc12d91b1dccafec1fe3c3d5cd80ec13457c77f96734e285bebf9
Binary file
Binary file
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # file: h2g_ajaxchat-plugin-voicerecognition.rb
4
+
5
+ # description: Used with the h2g_ajaxchat gem to facilitate voice input to text.
6
+
7
+
8
+ class AjaxChatPluginVoiceRecognition
9
+
10
+ def initialize(settings)
11
+ @lang = settings[:lang] || 'en-GB'
12
+ end
13
+
14
+ def apply(ac)
15
+
16
+ html = ac.views[:index].html
17
+
18
+ a = html.lines
19
+ r = a.grep /<input name="usermsg"/
20
+ i = a.index(r.first)
21
+ a2 = a.insert i+1, "<button id='start-button'>Start Listening</button>\n"
22
+ ac.views[:index].html = a2.join
23
+
24
+ ac.views[:index].js = ac.views[:index].js + js()
25
+
26
+ end
27
+
28
+ private
29
+
30
+ def js()
31
+ <<EOF
32
+ // voice recognition
33
+
34
+ function startListening() {
35
+ var recognition = new (webkitSpeechRecognition || SpeechRecognition)();
36
+ recognition.lang = '#{@lang}';
37
+ recognition.interimResults = false;
38
+ recognition.maxAlternatives = 1;
39
+ recognition.start();
40
+
41
+ [
42
+ 'onaudiostart',
43
+ 'onaudioend',
44
+ 'onend',
45
+ 'onerror',
46
+ 'onnomatch',
47
+ 'onresult',
48
+ 'onsoundstart',
49
+ 'onsoundend',
50
+ 'onspeechend',
51
+ 'onstart'
52
+ ].forEach(function(eventName) {
53
+ recognition[eventName] = function(e) {
54
+ console.log(eventName, e);
55
+ };
56
+ });
57
+
58
+ document.querySelector('#start-button').innerHTML = 'Listening...';
59
+
60
+ recognition.onend = function() {
61
+ document.querySelector('#start-button').innerHTML = 'Start Listening';
62
+ };
63
+ recognition.onresult = function() {
64
+ e = document.querySelector('#usermsg');
65
+ e.value = event.results[0][0].transcript;
66
+ ajaxRequest('chatter?msg=' + e.value, ajaxResponse1)
67
+ e.value = '';
68
+ };
69
+ };
70
+
71
+ (function() {
72
+ document.querySelector('#start-button').addEventListener('click', startListening);
73
+ })();
74
+
75
+ EOF
76
+ end
77
+ end
78
+
metadata ADDED
@@ -0,0 +1,70 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: h2g_ajaxchat-plugin-voicerecognition
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - James Robertson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjAwNzA1MjMwNTA5WhcN
15
+ MjEwNzA1MjMwNTA5WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDIV3SS
17
+ Xm6RB8c29viDp+S8PqnnlLGRbV9UPceyYZwMz/ARtgYpI1zfdWd8vuReOjDMaISz
18
+ q6jehetdwqsJw1o07Eg7MvtUqowd47qQDoLIp6A6v2jMmdQQPb30PG+IkDVAhMTb
19
+ xKfIxrWAtMyJ8F8i9ESpkQHqh+jhQ7zAC2EoXuYxC9C3t5SA3yFs8YVDKeTX3ffW
20
+ B6RwE0OXajkfAeLeTm+kLpBm4E26f2tB3Jf+QpojYdN7+JYsnPfcuOiNhnPyZxd8
21
+ NHNuKSGtd7Wfo8uKkckxo9dmLZYbOT3Rv7haa3rMCvv08+87QVQlNsW8ZJWj4max
22
+ comY3gQXj+nRhkvC07f6Kz7VcfqLiQLU6I6qypDWsq+xIqxIaBV3QXRNM+RAs27n
23
+ VJkVslYwJT1DClVsQ6gL8dOwd3rdnoxna5HN0OCP0QX8n+Y/3KUhKtZe2XLuTCR5
24
+ qnVmBd28r+tlnvlfMBUqZvJskZuBHl4XCGe6/lGjSg+iCWgUJKBYifwwdtECAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUaS6MI08t
26
+ st4Jj4zDTUz9gVLDVKEwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEAE/6CcWjlDr2bwipSK9ep4N2zos+ja7HtqdVdDUjj
29
+ jjipfPJZwBTYtZV1Qgm5Y7ddNvMuCPzL9qnj3UlcgKLPjE3AhZkf5xfmH5e5WHS/
30
+ SaGNxuuFA1xrJiZ+rTWnuVlYe0bH2TNonXxsUhObc3JrSuRkl6tb/nJxbKWPBjhc
31
+ eCqddMlFiHuihC1V+nc5l6Iasn99z+zgZ5Uu6F5tL69obB5My8fU6Z7aFoRKk2Mx
32
+ CiG/xDt0bg5YrSY/lKeSWrszK+9UuvcF7PsFWIbUy4T3bL9qO5AAbQ8jGloHdbgB
33
+ kMZL3x8ob2n/Dycrphl3ALlz5ovTypQ+E4f/SjYYvULCp9hVaUhInbyoFbTFjUsm
34
+ +wwBIdFixG98xyKTTxA9hG/G+3HbMuxdEvx0BYFiRr0J4eZUJOnP/WeFoxTTynQZ
35
+ /WSnWC6mt27COxzkBzTYtRm/xQNCAoitCy6qKOug1jh1mFKK4X2ZIBNDJA90IUtO
36
+ qRuTqqKFZWY5IT0ROK52pCXQ
37
+ -----END CERTIFICATE-----
38
+ date: 2020-07-05 00:00:00.000000000 Z
39
+ dependencies: []
40
+ description:
41
+ email: james@jamesrobertson.eu
42
+ executables: []
43
+ extensions: []
44
+ extra_rdoc_files: []
45
+ files:
46
+ - lib/h2g_ajaxchat-plugin-voicerecognition.rb
47
+ homepage: https://github.com/jrobertson/h2g_ajaxchat-plugin-voicerecognition
48
+ licenses:
49
+ - MIT
50
+ metadata: {}
51
+ post_install_message:
52
+ rdoc_options: []
53
+ require_paths:
54
+ - lib
55
+ required_ruby_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ required_rubygems_version: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ requirements: []
66
+ rubygems_version: 3.0.3
67
+ signing_key:
68
+ specification_version: 4
69
+ summary: Used with the h2g_ajaxchat gem to facilitate voice input to text.
70
+ test_files: []
Binary file