|
<!DOCTYPE html> |
|
<html class="no-js consumer" lang="th"> |
|
|
|
<head> |
|
<meta charset="utf-8"> |
|
<meta content="initial-scale=1, minimum-scale=1, width=device-width" name="viewport"> |
|
<meta content="Google Chrome is a browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier." |
|
name="description"> |
|
<title> |
|
demo apps |
|
</title> |
|
<link href="http://www.google.com/images/icons/product/chrome-32.png" rel="icon" type="image/ico"> |
|
<link href="http://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700&subset=latin" rel="stylesheet"> |
|
<link href="http://www.google.com/intl/en/chrome/assets/common/css/chrome.min.css" rel="stylesheet"> |
|
<h4 style="overscroll-behavior-block;:"><a href="../index.html">HOME</a></h4> |
|
<style> |
|
#info { |
|
font-size: 20px; |
|
} |
|
|
|
#div_start { |
|
float: right; |
|
} |
|
|
|
#headline { |
|
text-decoration: none |
|
} |
|
|
|
#results { |
|
font-size: 14px; |
|
font-weight: bold; |
|
border: 1px solid #ddd; |
|
padding: 15px; |
|
text-align: left; |
|
min-height: 150px; |
|
background-color: rgb(250, 250, 73); |
|
} |
|
|
|
h1, .h1 { |
|
color: #000; |
|
font-size: 3.2em; |
|
font-weight: 21; |
|
line-height: 1.15; |
|
margin: 0 0 0.7em; |
|
background-color: rgb(252, 252, 248); width: -20px; |
|
} |
|
|
|
#start_button { |
|
border: 0; |
|
background-color: transparent; |
|
padding: 0; |
|
} |
|
|
|
.interim { |
|
color: gray; |
|
} |
|
|
|
.final { |
|
color: black; |
|
padding-right: 3px; |
|
} |
|
|
|
.button { |
|
display: none; |
|
} |
|
|
|
.marquee { |
|
margin: 20px auto; |
|
} |
|
|
|
#buttons { |
|
margin: 10px 0; |
|
position: relative; |
|
top: -50px; |
|
} |
|
|
|
#copy { |
|
margin-top: 20px; |
|
} |
|
|
|
#copy>div { |
|
display: none; |
|
margin: 0 70px; |
|
} |
|
|
|
a.c1 { |
|
font-weight: normal; |
|
} |
|
|
|
body{ |
|
background-image: url(backspeech.png) ; height: 500; width: -; |
|
background-position: center; |
|
font-style: italic; |
|
} |
|
|
|
</style> |
|
</head> |
|
|
|
<link rel="stylesheet" href="style.css"> |
|
<body class="" id="grid"> |
|
<div class="browser-landing" id="main"> |
|
<div class="compact marquee-stacked" id="marquee"> |
|
<div class="marquee-copy"> |
|
<h1> |
|
<a class="c1" href="https://www.instagram.com/ansellmaputri/?hl=id"> |
|
PROLOVE</a> |
|
</h1> |
|
</div> |
|
</div> |
|
<div class="compact marquee"> |
|
<div id="info"> |
|
|
|
<p id="info_start"> |
|
Click on the microphone icon and begin speaking for as long as you like. |
|
</p> |
|
<p></p> |
|
<p id="info_speak_now" style="display:none"> |
|
Speak now. |
|
</p> |
|
<p id="info_no_speech" style="display:none"> |
|
No speech was detected. You may need to adjust your <a href="//support.google.com/chrome/bin/answer.py?hl=en&answer=1407892">microphone |
|
settings</a>. |
|
</p> |
|
<p id="info_no_microphone" style="display:none"> |
|
No microphone was found. Ensure that a microphone is installed and that |
|
<a href="//support.google.com/chrome/bin/answer.py?hl=en&answer=1407892"> |
|
microphone settings</a> are configured correctly. |
|
</p> |
|
<p id="info_allow" style="display:none"> |
|
Click the "Allow" button above to enable your microphone. |
|
</p> |
|
<p id="info_denied" style="display:none"> |
|
Permission to use microphone was denied. |
|
</p> |
|
<p id="info_blocked" style="display:none"> |
|
Permission to use microphone is blocked. To change, go to chrome://settings/contentExceptions#media-stream |
|
</p> |
|
<p id="info_upgrade" style="display:none"> |
|
Web Speech API is not supported by this browser. Upgrade to <a href="//www.google.com/chrome">Chrome</a> version |
|
25 or later. |
|
</p> |
|
</div> |
|
|
|
<div id="div_start"> |
|
<button id="start_button" onclick="startButton(event)"><img alt="Start" id="start_img" |
|
src="5346039.png"></button> |
|
</div> |
|
<div id="results"> |
|
<span class="final" id="final_span"></span> <span class="interim" id="interim_span"></span> |
|
</div> |
|
<div id="copy"> |
|
<button class="button" id="copy_button" onclick="copyButton()">Copy and Paste</button> |
|
<div id="copy_info"> |
|
<p> |
|
Press Control-C to copy text. |
|
</p> |
|
<p> |
|
(Command-C on Mac.) |
|
</p> |
|
</div><button class="button" id="email_button" onclick="emailButton()">save</button> |
|
<div id="email_info"> |
|
<p> |
|
Text sent to default email application. |
|
</p> |
|
<p> |
|
(See chrome://settings/handlers to change.) |
|
</p> |
|
</div> |
|
</div> |
|
<div class="compact marquee" id="div_language"> |
|
<select id="select_language" onchange="updateCountry()"> |
|
</select> <select id="select_dialect"> |
|
</select> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
<script src="http://www.google.com/intl/en/chrome/assets/common/js/chrome.min.js"> |
|
|
|
</script> |
|
<script> |
|
var chrmMenuBar = new chrm.ui.MenuBar(); |
|
chrmMenuBar.decorate('nav'); |
|
var chrmLogo = new chrm.ui.Logo('logo'); |
|
|
|
var chrmscroll = new chrm.ui.SmoothScroll('scroll'); |
|
chrmscroll.init(); |
|
|
|
|
|
|
|
window.___gcfg = { lang: 'en' }; |
|
(function () { |
|
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; |
|
po.src = 'https://apis.google.com/js/plusone.js'; |
|
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); |
|
})(); |
|
|
|
|
|
|
|
|
|
var doubleTracker = new gweb.analytics.DoubleTrack('floodlight', { |
|
src: 2542116, |
|
type: 'clien612', |
|
cat: 'chrom0' |
|
}); |
|
doubleTracker.track(); |
|
|
|
doubleTracker.trackClass('doubletrack', true); |
|
</script> |
|
<script> |
|
var langs = |
|
[['Afrikaans', ['af-ZA']], |
|
['Bahasa Indonesia', ['id-ID']], |
|
['Bahasa Melayu', ['ms-MY']], |
|
['Català', ['ca-ES']], |
|
['Čeština', ['cs-CZ']], |
|
['Dansk', ['da-DK']], |
|
['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']], |
|
['Filipino', ['fil-PH']], |
|
['Français', ['fr-FR']], |
|
['Galego', ['gl-ES']], |
|
['Hrvatski', ['hr_HR']], |
|
['IsiZulu', ['zu-ZA']], |
|
['Íslenska', ['is-IS']], |
|
['Italiano', ['it-IT', 'Italia'], |
|
['it-CH', 'Svizzera']], |
|
['Lietuvių', ['lt-LT']], |
|
['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', ['sl-SI']], |
|
['Slovenčina', ['sk-SK']], |
|
['Suomi', ['fi-FI']], |
|
['Svenska', ['sv-SE']], |
|
['Tiếng Việt', ['vi-VN']], |
|
['Türkçe', ['tr-TR']], |
|
['Ελληνικά', ['el-GR']], |
|
['български', ['bg-BG']], |
|
['Pусский', ['ru-RU']], |
|
['Српски', ['sr-RS']], |
|
['Українська', ['uk-UA']], |
|
['한국어', ['ko-KR']], |
|
['中文', ['cmn-Hans-CN', '普通话 (中国大陆)'], |
|
['cmn-Hans-HK', '普通话 (香港)'], |
|
['cmn-Hant-TW', '中文 (台灣)'], |
|
['yue-Hant-HK', '粵語 (香港)']], |
|
['日本語', ['ja-JP']], |
|
['हिन्दी', ['hi-IN']], |
|
['ภาษาไทย', ['th-TH']]]; |
|
|
|
for (var i = 0; i < langs.length; i++) { |
|
select_language.options[i] = new Option(langs[i][0], i); |
|
} |
|
select_language.selectedIndex = 7; |
|
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 create_email = false; |
|
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 = '/intl/en/chrome/assets/common/images/content/mic-animate.gif'; |
|
}; |
|
|
|
recognition.onerror = function (event) { |
|
if (event.error == 'no-speech') { |
|
start_img.src = '/intl/en/chrome/assets/common/images/content/mic.gif'; |
|
showInfo('info_no_speech'); |
|
ignore_onend = true; |
|
} |
|
if (event.error == 'audio-capture') { |
|
start_img.src = '/intl/en/chrome/assets/common/images/content/mic.gif'; |
|
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.src = '/intl/en/chrome/assets/common/images/content/mic.gif'; |
|
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); |
|
} |
|
if (create_email) { |
|
create_email = false; |
|
createEmail(); |
|
} |
|
}; |
|
|
|
recognition.onresult = function (event) { |
|
var interim_transcript = ''; |
|
if (typeof (event.results) == 'undefined') { |
|
recognition.onend = null; |
|
recognition.stop(); |
|
upgrade(); |
|
return; |
|
} |
|
for (var i = event.resultIndex; i < event.results.length; ++i) { |
|
if (event.results[i].isFinal) { |
|
final_transcript += event.results[i][0].transcript; |
|
} 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); |
|
if (final_transcript || interim_transcript) { |
|
showButtons('inline-block'); |
|
} |
|
}; |
|
} |
|
|
|
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 createEmail() { |
|
var n = final_transcript.indexOf('\n'); |
|
if (n < 0 || n >= 80) { |
|
n = 40 + final_transcript.substring(40).indexOf(' '); |
|
} |
|
var subject = encodeURI(final_transcript.substring(0, n)); |
|
var body = encodeURI(final_transcript.substring(n + 1)); |
|
window.location.href = 'mailto:?subject=' + subject + '&body=' + body; |
|
} |
|
|
|
function copyButton() { |
|
if (recognizing) { |
|
recognizing = false; |
|
recognition.stop(); |
|
} |
|
copy_button.style.display = 'none'; |
|
copy_info.style.display = 'inline-block'; |
|
showInfo(''); |
|
} |
|
|
|
function emailButton() { |
|
if (recognizing) { |
|
create_email = true; |
|
recognizing = false; |
|
recognition.stop(); |
|
} else { |
|
createEmail(); |
|
} |
|
email_button.style.display = 'none'; |
|
email_info.style.display = 'inline-block'; |
|
showInfo(''); |
|
} |
|
|
|
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.src = 'http://www.google.com/intl/en/chrome/assets/common/images/content/mic-slash.gif'; |
|
showInfo('info_allow'); |
|
showButtons('none'); |
|
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'; |
|
} |
|
} |
|
|
|
var current_style; |
|
function showButtons(style) { |
|
if (style == current_style) { |
|
return; |
|
} |
|
current_style = style; |
|
copy_button.style.display = style; |
|
email_button.style.display = style; |
|
copy_info.style.display = 'none'; |
|
email_info.style.display = 'none'; |
|
} |
|
</script> |
|
</body> |
|
|
|
</html> |