-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 9494a21
Showing
13 changed files
with
506 additions
and
0 deletions.
There are no files selected for viewing
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
* { | ||
font-family: Verdana, Arial, sans-serif; | ||
} | ||
a:link { | ||
color:#000; | ||
text-decoration: none; | ||
} | ||
a:visited { | ||
color:#000; | ||
} | ||
a:hover { | ||
color:#33F; | ||
} | ||
.button { | ||
background: -webkit-linear-gradient(top,#008dfd 0,#0370ea 100%); | ||
border: 1px solid #076bd2; | ||
border-radius: 3px; | ||
color: #fff; | ||
display: none; | ||
font-size: 13px; | ||
font-weight: bold; | ||
line-height: 1.3; | ||
padding: 8px 25px; | ||
text-align: center; | ||
text-shadow: 1px 1px 1px #076bd2; | ||
letter-spacing: normal; | ||
} | ||
.center { | ||
padding: 10px; | ||
text-align: center; | ||
} | ||
.final { | ||
color: black; | ||
padding-right: 3px; | ||
} | ||
.interim { | ||
color: gray; | ||
} | ||
.right { | ||
float: right; | ||
} | ||
.sidebyside { | ||
display: inline-block; | ||
width: 45%; | ||
min-height: 40px; | ||
text-align: left; | ||
vertical-align: top; | ||
} | ||
#headline { | ||
font-size: 40px; | ||
font-weight: 300; | ||
} | ||
#info { | ||
-webkit-app-region: drag; | ||
text-align: center; | ||
color: #777; | ||
visibility: hidden; | ||
margin-top: 5px; | ||
} | ||
#results { | ||
font-size: 14px; | ||
font-weight: bold; | ||
border: 1px solid #ddd; | ||
padding: 15px; | ||
text-align: left; | ||
min-height: 1em; | ||
} | ||
#start_img { | ||
font-size: 40px; | ||
padding: 10px; | ||
color: #333; | ||
} | ||
#start_button { | ||
border: 0; | ||
background-color:transparent; | ||
padding: 0; | ||
outline: 0; | ||
margin-top: 3px; | ||
} | ||
|
||
#copyFrom { | ||
opacity: 0; | ||
position: fixed; | ||
left: -999999px; | ||
top: -999999px; | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,246 @@ | ||
var langs = | ||
[['Afrikaans', ['af-ZA']], | ||
['Bahasa Indonesia',['id-ID']], | ||
['Bahasa Melayu', ['ms-MY']], | ||
['Català', ['ca-ES']], | ||
['Čeština', ['cs-CZ']], | ||
['Deutsch', ['de-DE']], | ||
['English', ['en-AU', 'Australia'], | ||
['en-CA', 'Canada'], | ||
['en-IN', 'India'], | ||
['en-NZ', 'New Zealand'], | ||
['en-ZA', 'South Africa'], | ||
['en-GB', 'United Kingdom'], | ||
['en-US', 'United States']], | ||
['Español', ['es-AR', 'Argentina'], | ||
['es-BO', 'Bolivia'], | ||
['es-CL', 'Chile'], | ||
['es-CO', 'Colombia'], | ||
['es-CR', 'Costa Rica'], | ||
['es-EC', 'Ecuador'], | ||
['es-SV', 'El Salvador'], | ||
['es-ES', 'España'], | ||
['es-US', 'Estados Unidos'], | ||
['es-GT', 'Guatemala'], | ||
['es-HN', 'Honduras'], | ||
['es-MX', 'México'], | ||
['es-NI', 'Nicaragua'], | ||
['es-PA', 'Panamá'], | ||
['es-PY', 'Paraguay'], | ||
['es-PE', 'Perú'], | ||
['es-PR', 'Puerto Rico'], | ||
['es-DO', 'República Dominicana'], | ||
['es-UY', 'Uruguay'], | ||
['es-VE', 'Venezuela']], | ||
['Euskara', ['eu-ES']], | ||
['Français', ['fr-FR']], | ||
['Galego', ['gl-ES']], | ||
['Hrvatski', ['hr_HR']], | ||
['IsiZulu', ['zu-ZA']], | ||
['Íslenska', ['is-IS']], | ||
['Italiano', ['it-IT', 'Italia'], | ||
['it-CH', 'Svizzera']], | ||
['Magyar', ['hu-HU']], | ||
['Nederlands', ['nl-NL']], | ||
['Norsk bokmål', ['nb-NO']], | ||
['Polski', ['pl-PL']], | ||
['Português', ['pt-BR', 'Brasil'], | ||
['pt-PT', 'Portugal']], | ||
['Română', ['ro-RO']], | ||
['Slovenčina', ['sk-SK']], | ||
['Suomi', ['fi-FI']], | ||
['Svenska', ['sv-SE']], | ||
['Türkçe', ['tr-TR']], | ||
['български', ['bg-BG']], | ||
['Pусский', ['ru-RU']], | ||
['Српски', ['sr-RS']], | ||
['한국어', ['ko-KR']], | ||
['中文', ['cmn-Hans-CN', '普通话 (中国大陆)'], | ||
['cmn-Hans-HK', '普通话 (香港)'], | ||
['cmn-Hant-TW', '中文 (台灣)'], | ||
['yue-Hant-HK', '粵語 (香港)']], | ||
['日本語', ['ja-JP']], | ||
['Lingua latīna', ['la']]]; | ||
|
||
for (var i = 0; i < langs.length; i++) { | ||
select_language.options[i] = new Option(langs[i][0], i); | ||
} | ||
select_language.selectedIndex = 6; | ||
updateCountry(); | ||
select_dialect.selectedIndex = 6; | ||
showInfo('info_start'); | ||
|
||
function updateCountry() { | ||
for (var i = select_dialect.options.length - 1; i >= 0; i--) { | ||
select_dialect.remove(i); | ||
} | ||
var list = langs[select_language.selectedIndex]; | ||
for (var i = 1; i < list.length; i++) { | ||
select_dialect.options.add(new Option(list[i][1], list[i][0])); | ||
} | ||
select_dialect.style.visibility = list[1].length == 1 ? 'hidden' : 'visible'; | ||
} | ||
|
||
var final_transcript = ''; | ||
var recognizing = false; | ||
var ignore_onend; | ||
var start_timestamp; | ||
if (!('webkitSpeechRecognition' in window)) { | ||
upgrade(); | ||
} else { | ||
start_button.style.display = 'inline-block'; | ||
var recognition = new webkitSpeechRecognition(); | ||
recognition.continuous = true; | ||
recognition.interimResults = true; | ||
|
||
recognition.onstart = function() { | ||
recognizing = true; | ||
showInfo('info_speak_now'); | ||
//start_img.src = 'mic-animate.gif'; | ||
}; | ||
|
||
recognition.onerror = function(event) { | ||
if (event.error == 'no-speech') { | ||
start_img.textContent = 'mic_off'; | ||
showInfo('info_no_speech'); | ||
ignore_onend = true; | ||
} | ||
if (event.error == 'audio-capture') { | ||
start_img.textContent = 'mic_none'; | ||
showInfo('info_no_microphone'); | ||
ignore_onend = true; | ||
} | ||
if (event.error == 'not-allowed') { | ||
if (event.timeStamp - start_timestamp < 100) { | ||
showInfo('info_blocked'); | ||
} else { | ||
showInfo('info_denied'); | ||
} | ||
ignore_onend = true; | ||
} | ||
}; | ||
|
||
recognition.onend = function() { | ||
recognizing = false; | ||
if (ignore_onend) { | ||
return; | ||
} | ||
start_img.textContent = 'mic_none'; | ||
if (!final_transcript) { | ||
showInfo('info_start'); | ||
return; | ||
} | ||
showInfo(''); | ||
if (window.getSelection) { | ||
window.getSelection().removeAllRanges(); | ||
var range = document.createRange(); | ||
range.selectNode(document.getElementById('final_span')); | ||
window.getSelection().addRange(range); | ||
} | ||
}; | ||
|
||
recognition.onresult = function(event) { | ||
var interim_transcript = ''; | ||
for (var i = event.resultIndex; i < event.results.length; ++i) { | ||
if (event.results[i].isFinal) { | ||
final_transcript += event.results[i][0].transcript; | ||
doCopy(final_transcript); | ||
final_transcript = ''; | ||
sendNativeMessage('paste'); | ||
} else { | ||
interim_transcript += event.results[i][0].transcript; | ||
} | ||
} | ||
final_transcript = capitalize(final_transcript); | ||
final_span.innerHTML = linebreak(final_transcript); | ||
interim_span.innerHTML = linebreak(interim_transcript); | ||
/* | ||
*/ | ||
}; | ||
} | ||
|
||
function upgrade() { | ||
start_button.style.visibility = 'hidden'; | ||
showInfo('info_upgrade'); | ||
} | ||
|
||
var two_line = /\n\n/g; | ||
var one_line = /\n/g; | ||
function linebreak(s) { | ||
return s.replace(two_line, '<p></p>').replace(one_line, '<br>'); | ||
} | ||
|
||
var first_char = /\S/; | ||
function capitalize(s) { | ||
return s.replace(first_char, function(m) { return m.toUpperCase(); }); | ||
} | ||
|
||
function startButton(event) { | ||
if (recognizing) { | ||
recognition.stop(); | ||
return; | ||
} | ||
final_transcript = ''; | ||
recognition.lang = select_dialect.value; | ||
recognition.start(); | ||
ignore_onend = false; | ||
final_span.innerHTML = ''; | ||
interim_span.innerHTML = ''; | ||
start_img.textContent = 'mic'; | ||
showInfo('info_allow'); | ||
start_timestamp = event.timeStamp; | ||
} | ||
|
||
function showInfo(s) { | ||
if (s) { | ||
for (var child = info.firstChild; child; child = child.nextSibling) { | ||
if (child.style) { | ||
child.style.display = child.id == s ? 'inline' : 'none'; | ||
} | ||
} | ||
info.style.visibility = 'visible'; | ||
} else { | ||
info.style.visibility = 'hidden'; | ||
} | ||
} | ||
|
||
document.addEventListener('DOMContentLoaded', function() { | ||
connect(); | ||
document.getElementById('start_button').addEventListener('click', startButton); | ||
document.getElementById('select_language').addEventListener('change', updateCountry); | ||
}); | ||
|
||
// now the native messaging part | ||
var port = null; | ||
function connect() { | ||
var hostName = "com.google.chrome.example.echo"; | ||
port = chrome.runtime.connectNative(hostName); | ||
port.onMessage.addListener(onNativeMessage); | ||
port.onDisconnect.addListener(onDisconnected); | ||
} | ||
|
||
function sendNativeMessage(text) { | ||
var message = { text: text }; | ||
setTimeout(function() { | ||
port.postMessage(message); | ||
console.log("Sent message: " + text); | ||
}, 1); | ||
} | ||
|
||
function onNativeMessage(message) { | ||
console.log(message); | ||
} | ||
|
||
function onDisconnected() { | ||
console.log('Failed to connect: ' + chrome.runtime.lastError.message); | ||
port = null; | ||
} | ||
|
||
function doCopy(str) { | ||
var copyFrom = document.getElementById('copyFrom'); | ||
if (!copyFrom) return; | ||
copyFrom.focus(); | ||
copyFrom.value = str; | ||
copyFrom.select(); | ||
document.execCommand('copy'); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
var w = 400; | ||
var h = 150; | ||
var boundTop = Math.round(window.screen.availHeight-h); | ||
var boundLeft = Math.round(window.screen.availWidth-w); | ||
chrome.app.runtime.onLaunched.addListener(function() { | ||
chrome.app.window.create('view.html', { | ||
id: "speech2text-anywhere", | ||
innerBounds: { | ||
left: 0, | ||
top: 0, | ||
width: w, | ||
height: h, | ||
minWidth: w, | ||
minHeight: h, | ||
maxWidth: w, | ||
maxHeight: h | ||
}, | ||
frame: { | ||
type: 'none' | ||
}, | ||
alwaysOnTop: true | ||
}, function(appWindow) { | ||
// onloaded | ||
}); | ||
}); | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
// Copyright 2013 The Chromium Authors. All rights reserved. | ||
// Use of this source code is governed by a BSD-style license that can be | ||
// found in the LICENSE file. | ||
|
||
{ | ||
"name": "com.google.chrome.example.echo", | ||
"description": "Chrome Native Messaging API Example Host", | ||
"path": "native-messaging-example-host.bat", | ||
"type": "stdio", | ||
"allowed_origins": [ | ||
"chrome-extension://knldjmfmopnpolahpmmgbagdohdnhkik/" | ||
] | ||
} |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
:: Copyright 2014 The Chromium Authors. All rights reserved. | ||
:: Use of this source code is governed by a BSD-style license that can be | ||
:: found in the LICENSE file. | ||
|
||
:: Change HKCU to HKLM if you want to install globally. | ||
:: %~dp0 is the directory containing this bat script and ends with a backslash. | ||
REG ADD "HKCU\Software\Google\Chrome\NativeMessagingHosts\com.google.chrome.example.echo" /ve /t REG_SZ /d "%~dp0com.google.chrome.example.echo-win.json" /f |
Oops, something went wrong.