此处将为大家介绍关于Golang基于chrome浏览器语音识别web演示系统WebHTK开发之UI篇的详细内容,并且为您解答有关golangchromedp的相关问题,此外,我们还将为您介绍关于C#基
此处将为大家介绍关于Golang 基于chrome浏览器语音识别web演示系统WebHTK开发之 UI篇的详细内容,并且为您解答有关golang chromedp的相关问题,此外,我们还将为您介绍关于C# 基于 Chrome 浏览器的 webroser 开发、chrome浏览器一打开就闪退怎么办?谷歌chrome浏览器闪退的解决方法、Chrome浏览器允许通过WebDriver访问不安全的页面、Chrome浏览器内容不足一页, 右边srollbar无显示_html/css_WEB-ITnose的有用信息。
本文目录一览:- Golang 基于chrome浏览器语音识别web演示系统WebHTK开发之 UI篇(golang chromedp)
- C# 基于 Chrome 浏览器的 webroser 开发
- chrome浏览器一打开就闪退怎么办?谷歌chrome浏览器闪退的解决方法
- Chrome浏览器允许通过WebDriver访问不安全的页面
- Chrome浏览器内容不足一页, 右边srollbar无显示_html/css_WEB-ITnose
Golang 基于chrome浏览器语音识别web演示系统WebHTK开发之 UI篇(golang chromedp)
没啥好说的,直接上现阶段的HTML代码,后续修改,再更新该篇博客。
record.html:
<!DOCTYPE html> <html> <head> <Meta charset="utf-8"/> <Meta http-equiv="X-UA-Compatible" content="IE=edge"/> <Meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/> <Meta name="keywords" content="PONPON,HTK,Go语言"/> <Meta name="description" content="基于Beego开发语音识别演示系统"/> <Meta name="generator" content="PONPON" /> <link href="/static/css/bootstrap.min.css" rel="stylesheet"> <link href="/static/css/docs.css" rel="stylesheet"> <link href="http://cdn.bootcss.com/highlight.js/7.3/styles/github.min.css" rel="stylesheet"> <link rel="shortcut icon" href="/static/img/logoicon.jpg"> <link rel="stylesheet" href="http://libs.baidu.com/fontawesome/4.0.3/css/font-awesome.min.css"/> <link rel="alternate" type="application/RSS+xml" href="/RSS.xml"/> <script type="text/javascript" src="/static/lib/recorder.js"> </script> <script type="text/javascript" src="/static/lib/jquery-1.10.1.min.js"> </script> <script type="text/javascript" src="/static/lib/recController.js"> </script> <title>WebHTK 演示系统</title> </head> <body> <nav id="header"> <div> <h3 id="header-h">闽南语 - 语音识别演示系统</h3> <ul id="resultBox"> <li >识别结果</li> </ul> <form> <a id="img" href="javascript://" > <img src="/static/img/aa.png"alt=""/> </a> </form> <div id="message">点击麦克风,开始录音!</div> <script type="text/javascript"> var recording = false; function test() { if (!recording) { document.getElementById("img").innerHTML="<img src='/static/img/a1.png'' alt=''/>"; toRecord(); recording=true; }else{ document.getElementById("img").innerHTML="<img src='/static/img/aa.png'' alt=''/>"; toSend(); recording = false; } }; function toRecord(){ rec.record(); var dd = ws.send("start"); $("#message").text("再次点击,结束录音!"); intervalKey = setInterval(function() { rec.exportWAV(function(blob) { rec.clear(); ws.send(blob); }); },300); } function toSend(){ rec.stop(); if (intervalKey == null) { $("#message").text("请先录音再发送!"); return }; ws.send(sampleRate); ws.send(channels); ws.send("stop"); rec.clear(); clearInterval(intervalKey); intervalKey = null; } </script> </div> </nav> <audiocontrols autoplay></audio> </body> </html>
recorder.js:
(function(window) { var WORKER_PATH = '/static/lib/recorderWorker.js'; var Recorder = function(source,chan,cfg) { var config = cfg || {}; var channels = chan || 1; var bufferLen = config.bufferLen || 8192; this.context = source.context; this.node = this.context.createJavaScriptNode(bufferLen,channels,channels); var worker = new Worker(config.workerPath || WORKER_PATH); worker.postMessage({ command: 'init',config: { sampleRate: this.context.sampleRate } }); var recording = false,currCallback; this.node.onaudioprocess = function(e) { if (!recording) return; worker.postMessage({ command: 'record',buffer: [ e.inputBuffer.getChannelData(0) ] }); } this.configure = function(cfg) { for (var prop in cfg) { if (cfg.hasOwnProperty(prop)) { config[prop] = cfg[prop]; } } } this.record = function() { recording = true; } this.stop = function() { recording = false; } this.clear = function() { worker.postMessage({ command: 'clear' }); } this.getBuffer = function(cb) { currCallback = cb || config.callback; worker.postMessage({ command: 'getBuffer' }) } this.exportWAV = function(cb,type) { currCallback = cb || config.callback; type = type || config.type || 'audio/wav'; if (!currCallback) throw new Error('Callback not set'); worker.postMessage({ command: 'exportWAV',type: type }); } worker.onmessage = function(e) { var blob = e.data; currCallback(blob); } source.connect(this.node); this.node.connect(this.context.destination); }; window.Recorder = Recorder; })(window);
recorderWorker.js:
var recLength = 0,recBuffersL = [],sampleRate; this.onmessage = function(e) { switch (e.data.command) { case 'init': init(e.data.config); break; case 'record': record(e.data.buffer); break; case 'exportWAV': exportWAV(e.data.type); break; case 'getBuffer': getBuffer(); break; case 'clear': clear(); break; } }; function init(config) { sampleRate = config.sampleRate; } function record(inputBuffer) { recBuffersL.push(inputBuffer[0]); recLength += inputBuffer[0].length; } function exportWAV(type) { var bufferL = mergeBuffers(recBuffersL,recLength); var interleaved = interleave(bufferL); var dataview = encodeWAV(interleaved); var audioBlob = new Blob([dataview],{ type: type }); this.postMessage(audioBlob); } function getBuffer() { var buffers = []; buffers.push(mergeBuffers(recBuffersL,recLength)); this.postMessage(buffers); } function clear(inputBuffer) { recLength = 0; recBuffersL = []; } function mergeBuffers(recBuffers,recLength) { var result = new Float32Array(recLength); var offset = 0; for (var i = 0; i < recBuffers.length; i++) { result.set(recBuffers[i],offset); offset += recBuffers[i].length; } return result; } function interleave(inputL) { var length; var result; var index = 0,inputIndex = 0; if (sampleRate == 48000) { length = inputL.length / 6; result = new Float32Array(length); while (index < length) { result[index++] = (inputL[inputIndex++] + inputL[inputIndex++] + inputL[inputIndex++] + inputL[inputIndex++] + inputL[inputIndex++] + inputL[inputIndex++]) / 6; } } else if (sampleRate == 44100) { length = inputL.length / 6; result = new Float32Array(length); while (index < length) { if (inputIndex % 12 == 0) { result[index++] = (inputL[inputIndex] + inputL[inputIndex++] + inputL[inputIndex++] + inputL[inputIndex++] + inputL[inputIndex++] + inputL[inputIndex++] + inputL[inputIndex++]) / 7; } else { result[index++] = (inputL[inputIndex++] + inputL[inputIndex++] + inputL[inputIndex++] + inputL[inputIndex++] + inputL[inputIndex++] + inputL[inputIndex++]) / 6; }; } } else { length = inputL.length; result = new Float32Array(length); while (index < length) { result[index++] = inputL[inputIndex++]; } }; return result; } function floatTo16BitPCM(output,offset,input) { for (var i = 0; i < input.length; i++,offset += 2) { var s = Math.max(-1,Math.min(1,input[i])); output.setInt16(offset,s < 0 ? s * 0x8000 : s * 0x7FFF,true); } } function writeString(view,string) { for (var i = 0; i < string.length; i++) { view.setUint8(offset + i,string.charCodeAt(i)); } } function encodeWAV(samples) { var buffer = new ArrayBuffer(samples.length * 2); var view = new DataView(buffer); floatTo16BitPCM(view,samples); return view; }
recController.js:
var onFail = function(e) { console.log('Rejected!',e); }; var onSuccess = function(s) { var context = new webkitaudiocontext(); var mediastreamsource = context.createmediastreamsource(s); rec = new Recorder(mediastreamsource,channels); sampleRate = 8000; } navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; var rec; var intervalKey = null; var audio = document.querySelector('#audio'); var sampleRate; var channels = 1; function startRecording() { if (navigator.getUserMedia) { navigator.getUserMedia({ audio: true },onSuccess,onFail); } else { console.log('navigator.getUserMedia not present'); } } startRecording(); //-------------------- var ws = new WebSocket('ws://' + window.location.host + '/join'); ws.onopen = function() { console.log("Openened connection to websocket"); }; ws.onclose = function() { console.log("Close connection to websocket"); } ws.onerror = function() { console.log("Cannot connection to websocket"); } ws.onmessage = function(result) { var data = JSON.parse(result.data); console.log('识别结果:' + data.Pinyin); var result = document.getElementById("resultBox") result.getElementsByTagName("li")[0].innerHTML = data.Hanzi; document.getElementById("message").innerHTML = "点击麦克风,开始录音!"; }
进入页面:
正在录音:
识别结果,目前还为将拼音转换为汉字,下图为“点亮星光”的显示结果图:
C# 基于 Chrome 浏览器的 webroser 开发
近期公司要参加一个展会,需要展示现有产品,需要做一个桌面应用的壳来展示 Web 系统,由于 C# 支持的 VS 自带的 webroser 控件是基于 IE 内核,版本较低,展示效果非常长,所以改用了 Chrome 的内核替换 IE,实现后效果良好。
特地在网上搜索了一下相关的资料,觉得还不错,转载给大家。
http://blog.csdn.net/qcmy980/article/details/52804551
http://www.cnblogs.com/lonelyxmas/p/6209261.html
chrome浏览器一打开就闪退怎么办?谷歌chrome浏览器闪退的解决方法
chrome浏览器一打开就闪退怎么办?最近有用户询问这个问题,谷歌浏览器因为强大的功能和精简的界面,深受用户的喜爱,但是在使用时遇到闪退的情况应该怎么处理呢?就此,本篇带来了详细的解决方法,分享给大家,感兴趣的继续看下去吧。
谷歌chrome浏览器闪退的解决方法:
方法 1、重新安装 Chrome
建议你尝试看看删除 谷歌 Chrome 应用程序后再重新安装一次,也许这样就能解决 Chrome 闪退及 Chrome 当机的问题,Windows 和 Mac 删除应用程序的方法如下:
Windows 删除应用程序:开始 》 在 Chrome 按右键 》 解除安装。
Mac 删除应用程序:Finder 》 应用程序 》 将 Chrome 丢到垃圾桶。
删除 Chrome 之后,在开启其他浏览器来下载并安装 谷歌 Chrome。
方法 2、移除多余的 Chrome 套件
Chrome套件可以拓展更多实用的功能,但某些套件可能会造成一些不预期的谷歌 Chrome浏览器错误,包含导致 Chrome闪退、Chrome 当机或突然自动关闭所有窗口等,因此建议你将一些用不到的 Chrome 套件都移除。
删除 Chrome 套件的步骤如下:
1、击 Chrome 浏览器右上角拼图图标。
2、选最底部管理扩充功能。
3、点击删除将一些用不到的 Chrome 套件删除。
方法 3、关闭 Chrome 硬件加速
如果你的 Chrome 一直当机或闪退,有些网友回报可以通过关闭「硬件加速」功能来解决,想关闭这功能的话可以在 Chrome 右上角「⋯」》「设置 」》「进阶」》「系统」》 关闭「在可用时使用硬件加速」。
方法 4、更新 Chrome
如果你的谷歌 Chrome浏览器版本太旧,那也会导致闪退等错误,建议大家将Chrome更新到最新版再试试看,点选右上角「⋯」》「设置」》「关于 Chrome」》「立即更新」。
方法 5、更新 macOS 系统版本
如果你使用的是 M1 Mac 系列,且是 macOS Monterey 系统,那你应该是遇到跟我一样的 Chrome闪退错误,我最终的解决方法是「更新 macOS 系统版本」,更新到最新版之后,我就没遇过 Chrome 自动关闭或闪退了,完全解决困扰。
更新 macOS 版本的步骤如下:
1、击 Mac 左上角「苹果 」图标,按一下「关于这台 Mac」。
2、点击软件更新。
3、确认是否有新的 macOS 版本可更新,有的话点选「立即更新」。
Chrome浏览器允许通过WebDriver访问不安全的页面
通过将Chrome 62与Chrome驱动程序2.33和WebDriver 3.6.0结合使用,Chrome允许页面使用错误的SSL证书加载-
当页面打开时,URL栏中会显示“不安全”,但页面仍然加载。如果我手动访问该页面,则会得到预期的“阻止程序页面”。
但是,我希望Chrome浏览器通过WebDriver拒绝该页面,就像Chrome对人类用户一样。
不幸的是,我找不到其他人报告同样的问题(很多人报告的是完全相反的问题-即他们想通过WebDriver允许不安全的连接,但是Chrome一直在阻止它们!)。
是否可以设置一个标志(如果WebDriver内部将一个传递给Chrome,则可以设置标志)?
const {Builder, Capabilities} = require(''selenium-webdriver'');const driver = new Builder() .withCapabilities(Capabilities.chrome()) .build();driver.get(''https://localhost/''); // Uses self-signed certificate.
答案1
小编典典默认情况下,chromedriver
接受不受信任的证书。
要禁用此功能,您必须排除此开关ignore-certificate-errors
:
var webdriver = require(''selenium-webdriver'');var driver = new webdriver.Builder() .withCapabilities({ ''browserName'': ''chrome'', ''goog:chromeOptions'': { ''args'': [''disable-infobars''], ''excludeSwitches'': [''ignore-certificate-errors''], ''prefs'': { } } }).build();driver.get("https://self-signed.badssl.com/")
Chrome浏览器内容不足一页, 右边srollbar无显示_html/css_WEB-ITnose
Chrome浏览器有个特性, 当内容不足一页时, 右边的垂直scrollbar无法显示. 但是这给我造成了一个问题:
当我点击链接, 从一个内容不足一个的超过一页的链接时, scrollbar从无显示到显示, 这造成相同的图标有一些位移,
我想是无论合适让垂直srollbar都显示, 当内容不足一页时, 右边scrollbar为灰色, 无法移动
求解决办法
回复讨论(解决方案)
给body设置css样式overflow:scroll试试
关于Golang 基于chrome浏览器语音识别web演示系统WebHTK开发之 UI篇和golang chromedp的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于C# 基于 Chrome 浏览器的 webroser 开发、chrome浏览器一打开就闪退怎么办?谷歌chrome浏览器闪退的解决方法、Chrome浏览器允许通过WebDriver访问不安全的页面、Chrome浏览器内容不足一页, 右边srollbar无显示_html/css_WEB-ITnose的相关信息,请在本站寻找。
本文标签: