当前位置: 首页 > article >正文

vosk-ASR angular调用[AI人工智能(五十二)]—东方仙盟

核心代码目录结构代码import { Component } from angular/core; import { ElementRef, ViewChild} from angular/core import { DictateService } from ./dictate-service; Component({ selector: app-root, templateUrl: ./app.component.html, styleUrls: [./app.component.css], providers: [DictateService] }) export class AppComponent { ViewChild(results) private results: ElementRef; buttonText Start Recognition; textDataBase ; textData ; constructor(private dictateService: DictateService) { } switchSpeechRecognition() { if (!this.dictateService.isInitialized()) { this.dictateService.init({ server: wss://api.alphacephei.com/asr/en/, onResults: (hyp) { console.log(hyp); this.textDataBase this.textDataBase hyp \n; this.textData this.textDataBase; this.results.nativeElement.scrollTop this.results.nativeElement.scrollHeight; }, onPartialResults: (hyp) { console.log(hyp); this.textData this.textDataBase hyp; }, onError: (code, data) { console.log(code, data); }, onEvent: (code, data) { console.log(code, data); } }); this.buttonText Stop Recognition; } else if (this.dictateService.isRunning()) { this.dictateService.resume(); this.buttonText Stop Recognition; } else { this.dictateService.pause(); this.buttonText Start Recognition; } } }配置文件{ name: speech-app, version: 0.0.0, scripts: { ng: ng, start: ng serve, build: ng build, test: ng test, lint: ng lint, e2e: ng e2e }, private: true, dependencies: { angular/animations: ~7.2.0, angular/cdk: ^7.3.7, angular/common: ~7.2.0, angular/compiler: ~7.2.0, angular/core: ~7.2.0, angular/flex-layout: ^7.0.0-beta.24, angular/forms: ~7.2.0, angular/material: ^7.3.7, angular/platform-browser: ~7.2.0, angular/platform-browser-dynamic: ~7.2.0, angular/router: ~7.2.0, core-js: ^2.5.4, rxjs: ~6.3.3, rxjs-compat: ^6.5.2, tar: ^4.4.2, tslib: ^1.9.0, zone.js: ~0.8.26 }, devDependencies: { angular-devkit/build-angular: ^0.900.3, angular/cli: ~7.3.9, angular/compiler-cli: ~7.2.0, angular/language-service: ~7.2.0, types/jasmine: ~2.8.8, types/jasminewd2: ~2.0.3, types/node: ~8.9.4, codelyzer: ~4.5.0, jasmine-core: ~2.99.1, jasmine-spec-reporter: ~4.2.1, karma: ~4.0.0, karma-chrome-launcher: ~2.2.0, karma-coverage-istanbul-reporter: ~2.0.1, karma-jasmine: ~1.1.2, karma-jasmine-html-reporter: ^0.2.2, protractor: ~5.4.0, ts-node: ~7.0.0, tslint: ~5.11.0, typescript: ~3.2.2 } }一、代码核心功能结合「东方仙盟」比喻把这段代码想象成「东方仙盟」的语音传令系统仙盟总坛AppComponent你是盟主负责统筹全局页面交互、显示识别结果。传令司DictateService仙盟的专属传令官专门对接外部的「语音识别仙府Vosk 服务器」。传音玉简ViewChild (results)用来显示传令官传回来的语音文字识别结果。开关令牌switchSpeechRecognition盟主用来下令「开始 / 暂停 / 恢复」传令官工作的指令。二、代码逐行解析新手友好版typescript运行// 1. 引入Angular核心组件仙盟基础功法 import { Component } from angular/core; import { ElementRef, ViewChild} from angular/core // 2. 引入自定义的语音识别服务传令司的专属心法 import { DictateService } from ./dictate-service; // 3. 组件装饰器仙盟总坛的身份标识 Component({ selector: app-root, // 组件在HTML中的标签名总坛的门牌 templateUrl: ./app.component.html, // 页面模板总坛的布局 styleUrls: [./app.component.css], // 样式文件总坛的装修 providers: [DictateService] // 注入服务给总坛配传令官 }) // 4. 组件类盟主的核心操作 export class AppComponent { // 4.1 获取页面上的results元素绑定传音玉简 ViewChild(results) private results: ElementRef; // 4.2 按钮文字令牌的显示文字 buttonText Start Recognition; // 4.3 已确认的识别文本传令官最终确认的情报 textDataBase ; // 4.4 实时显示的文本传令官临时传回的情报 textData ; // 4.5 构造函数盟主上任时分配传令官 constructor(private dictateService: DictateService) { } // 4.6 核心方法切换语音识别状态盟主下达传令指令 switchSpeechRecognition() { // 场景1传令官还未初始化第一次召唤传令官 if (!this.dictateService.isInitialized()) { // 初始化传令官对接Vosk服务器给传令官指定对接的仙府 this.dictateService.init({ server: wss://api.alphacephei.com/asr/en/, // Vosk的英文识别服务器仙府地址 // 识别结果确认时的回调传令官确认情报后上报盟主 onResults: (hyp) { console.log(hyp); // 控制台打印识别结果传令官先记个底 // 把确认的结果拼接到总情报里 this.textDataBase this.textDataBase hyp \n; // 实时显示的文本同步为总情报 this.textData this.textDataBase; // 滚动到文本框底部确保盟主能看到最新情报 this.results.nativeElement.scrollTop this.results.nativeElement.scrollHeight; }, // 临时识别结果的回调传令官临时上报的情报 onPartialResults: (hyp) { console.log(hyp); // 实时显示已确认的情报 临时情报 this.textData this.textDataBase hyp; }, // 错误回调传令官对接仙府出错时上报 onError: (code, data) { console.log(code, data); }, // 事件回调传令官上报其他状态事件 onEvent: (code, data) { console.log(code, data); } }); // 按钮文字改为“停止识别”令牌状态更新 this.buttonText Stop Recognition; } // 场景2传令官已初始化且处于暂停状态恢复传令 else if (this.dictateService.isRunning()) { // 这里有个逻辑错误应该是 !this.dictateService.isRunning() this.dictateService.resume(); // 恢复识别让传令官继续工作 this.buttonText Stop Recognition; } // 场景3传令官正在工作暂停传令 else { this.dictateService.pause(); // 暂停识别让传令官歇一下 this.buttonText Start Recognition; } } }三、关键问题修正新手必看代码中有一个逻辑错误会导致 “暂停 / 恢复” 功能失效typescript运行// 错误代码 else if (this.dictateService.isRunning()) { this.dictateService.resume(); } // 正确代码核心修改 else if (!this.dictateService.isRunning()) { // 加个!表示“未运行暂停”时恢复 this.dictateService.resume(); }解释isRunning()返回true表示 “正在识别”此时应该执行pause()返回false表示 “已暂停”此时才执行resume()。四、配套 HTML 示例传音玉简的布局在app.component.html中添加以下内容才能看到识别结果html预览!-- 语音识别按钮盟主的令牌 -- button (click)switchSpeechRecognition() {{ buttonText }} /button !-- 识别结果显示区域传音玉简 -- div #results stylewidth: 400px; height: 300px; border: 1px solid #ccc; padding: 10px; overflow-y: auto; margin-top: 20px; {{ textData }} /div五、前置条件让代码能运行安装 Vosk 相关依赖确保DictateService已正确实现或安装官方的 vosk-browser 包bash运行npm install vosk-browser --save修改识别语言代码中用的是英文服务器en/如果要识别中文改为中文服务器typescript运行server: wss://api.alphacephei.com/asr/zh/, // 中文识别服务器浏览器权限语音识别需要麦克风权限运行时会弹窗请求需点击 “允许”。总结核心逻辑Angular 组件通过DictateService对接 Vosk 语音识别服务器实现 “开始 / 暂停 / 恢复” 语音转文字并实时显示结果。关键修正switchSpeechRecognition方法中恢复识别的条件应为!this.dictateService.isRunning()暂停时恢复。运行前提需配置麦克风权限、正确的 Vosk 服务器地址且DictateService需实现init/isInitialized/isRunning/pause/resume等方法。如果需要DictateService的完整实现代码可以告诉我我会帮你补充新手友好版。东方仙盟拥抱知识开源共筑数字新生态在全球化与数字化浪潮中东方仙盟始终秉持开放协作、知识共享的理念积极拥抱开源技术与开放标准。我们相信唯有打破技术壁垒、汇聚全球智慧才能真正推动行业的可持续发展。开源赋能中小商户通过将前端异常检测、跨系统数据互联等核心能力开源化东方仙盟为全球中小商户提供了低成本、高可靠的技术解决方案让更多商家能够平等享受数字转型的红利。共建行业标准我们积极参与国际技术社区与全球开发者、合作伙伴共同制定开放协议 与技术规范推动跨境零售、文旅、餐饮等多业态的系统互联互通构建更加公平、高效的数字生态。知识普惠共促发展通过开源社区 、技术文档与培训体系东方仙盟致力于将前沿技术转化为可落地的行业实践赋能全球合作伙伴共同培育创新人才推动数字经济 的普惠式增长阿雪技术观在科技发展浪潮中我们不妨积极投身技术共享。不满足于做受益者更要主动担当贡献者。无论是分享代码、撰写技术博客还是参与开源项目 维护改进每一个微小举动都可能蕴含推动技术进步的巨大能量。东方仙盟是汇聚力量的天地我们携手在此探索硅基 生命为科技进步添砖加瓦。Hey folks, in this wild tech - driven world, why not dive headfirst into the whole tech - sharing scene? Dont just be the one reaping all the benefits; step up and be a contributor too. Whether youre tossing out your code snippets , hammering out some tech blogs, or getting your hands dirty with maintaining and sprucing up open - source projects, every little thing you do might just end up being a massive force that pushes tech forward. And guess what? The Eastern FairyAlliance is this awesome place where we all come together. Were gonna team up and explore the whole silicon - based life thing, and in the process, well be fueling the growth of technology

相关文章:

vosk-ASR angular调用[AI人工智能(五十二)]—东方仙盟

核心代码目录结构代码import { Component } from angular/core; import { ElementRef, ViewChild} from angular/core import { DictateService } from "./dictate-service";Component({selector: app-root,templateUrl: ./app.component.html,styleUrls: [./app.com…...

OpenClaw安全防护:从威胁认知到工程化加固

OpenClaw安全防护:从威胁认知到工程化加固⚠️ 为什么需要单独一章讲安全? 截至2026年3月,全球已有超过27万个OpenClaw实例暴露在公网上,ClawHub市场累计发现超过1184个恶意Skills,国家互联网应急中心(CNCE…...

opencv中,把图片变成灰度图有什么用

在 OpenCV 和计算机视觉中,把彩色图片变成灰度图(Grayscale)绝不仅仅是为了“怀旧”或“好看”,它有着非常硬核的工程价值和数学优势。 简单来说,它的核心作用可以概括为三个词:降维、去噪、提效。 以下是详…...

AI驱动的8款工具能高效简化论文写作,自动完成目录生成与内容结构调整

工具对比速览 工具名称 核心功能 处理速度 适用场景 特色优势 aibiye AI降重目录生成 20分钟 学术论文 知网/维普/格子达适配 aicheck AI检测目录优化 实时 初稿检查 多平台规则预判 askpaper 学术规范处理 15-30分钟 期刊投稿 保留专业术语 秒篇 一键式处…...

7个AI论文降重工具实测,改写效果与适用场景解析

AIGC检测功能展示 降AIGC效果 必知!7个AI降重排名,助论文通过 还在为论文查重率发愁?随着学术规范日益严格,查重和AIGC检测成为论文通过的硬性门槛。别担心,AI降重工具来拯救你!经过实测对比,…...

论文降重神器盘点:7款AI工具实测效果与使用建议

AIGC检测功能展示 降AIGC效果 必知!7个AI降重排名,助论文通过 还在为论文查重率发愁?随着学术规范日益严格,查重和AIGC检测成为论文通过的硬性门槛。别担心,AI降重工具来拯救你!经过实测对比,…...

去中心化AI系统:架构师必须知道的共识

去中心化AI系统:架构师必知的共识机制设计与实践 副标题:从分布式一致性到AI协同,拆解核心逻辑与落地要点 摘要/引言 当我们谈论AI的未来时,去中心化正在成为破局中心化AI痛点的关键方向——你是否遇到过这些问题? 中心…...

企业AI风险防控体系的敏捷设计:AI应用架构师的实战方法

企业AI风险防控体系的敏捷设计:AI应用架构师的实战方法 引言:AI时代的风险之痛,需要“敏捷”的解药 痛点引入:AI项目的“风险陷阱”你踩过吗? 作为AI应用架构师,你可能经历过这些崩溃瞬间: 模型…...

金三银四已到,Java就业压力为啥还没缓解?

今年金三银四快到了,但是大家就业压力却没有缓解多少。很多粉丝后台留言,Java程序员面临的竞争太激烈了……我自己也有实感,多年身处一线互联网公司,虽没有直面过求职跳槽的残酷,但经常担任技术面试考官,对…...

普通Java程序员如何快速上手性能调优?

性能优化可以说是很多一线大厂对其公司内高级开发的基本要求(其中以Java岗最为显著)。其原因有两个:一是提高系统的性能,二是为公司节省资源。两者都能做到,那你就不可谓不是普通程序员眼中的“调优大神了”。那么如何…...

阿里最新SpringBoot进阶笔记,2026快速上手突击必备!

相信从事Java开发的朋友都听说过SSM框架,老点的甚至经历过SSH,说起来有点恐怖,比如我就是经历过SSH那个时代未流。当然无论是SSM还是SSH都不是今天的重点,今天要说的是Spring Boot,一个令人眼前一亮的框架,…...

IT界有哪些优秀的高并发解决方案?

据有关数据表明,现在基本工作年限超过5年的Java开发岗以及各大厂招聘岗位,对于高并发这块内容是必定会考察的。这也就意味着,你想要在今年这个大环境下,找到一份薪水高且发展前景好的岗位,不关基础知识还要有良好的编码…...

Unity平台跳跃游戏开发利器:Platformer Project 技术架构深度解析

在游戏开发领域,平台跳跃(Platformer)一直是一个经典且充满魅力的游戏类型。从《超级马里奥》到《索尼克》,再到各种现代3D平台游戏,核心玩法始终围绕着精准的移动控制、复杂的地形互动以及丰富的角色技能展开。然而&a…...

OpenClaw-龙虾智能体-新手入门必看,一文搞懂核心定义与应用场景

OpenClaw(龙虾)智能体:新手入门必看,一文搞懂核心定义与应用场景📚 本章学习目标:深入理解OpenClaw(龙虾)智能体的核心概念与实践方法,掌握关键技术要点,了解…...

【从零学javase 第六天】网络编程(+多线程)

Java 网络编程实战教程:从零基础到群聊本文适合刚会 Java 的同学,带你从零基础学 Java 网络编程,最终实现多客户端群聊。一、网络编程基础概念 网络编程就是用程序让两台电脑互相传递信息。 IP 地址:电脑的网络位置,例…...

AI 批量图片去水印工具 v1.0.0 - 豆包专属去水印

豆包 AI 图片批量去水印工具 v1.0.0,是 AI 驱动的高效批量去水印神器,可自动批量处理图片水印,搭配教学视频与专属插件简化操作流程,助力用户轻松完成图片去水印工作。软件核心介绍基础功能:依托 AI 技术实现图片批量去…...

【实证分析】上市公司债务融资成本数据-含代码(2006-2024年)

数据简介:上市公司债务融资成本是指上市公司通过债务形式(如银行信贷、发行债券、融资租赁等)融入资金时,需要支付给债权人的费用或代价。这一成本是企业为获取债务资本而必须承担的支出,对企业的财务状况和经营成果具…...

Java 后端实现 token自动续期,这方案有点优雅!

在前后端分离的开发模式下,前端用户登录成功后后端服务会给用户颁发一个token。前端(如vue)在接收到 token后会将token存储到LocalStorage中。后续每次请求都会将此token放在请求头中传递到后端服务,后端服务会有一个过滤器对token进行拦截校验&#xff…...

11 张图总结下,微服务增量拉取

一、前言 上一篇我们讲解了客户端首次获取注册表时,需要从注册中心全量拉取注册表到本地存着。那后续如果有客户端注册、下线的话,注册表肯定就发生变化了,这个时候客户端就得更新本地注册表了,怎么更新呢?下面我会带…...

线程池里的代码明明报错了,为什么控制台一行异常日志都不打?

昨天下午,运营说有个用户标签更新任务没跑,后台数据全是旧的!这个任务我前两天才优化过,逻辑很简单,就是从数据库查一批人,算一下标签,再写回去。为了快点,我还特意用了线程池做并发…...

十万个why:Nacos 服务注册为什么默认是临时实例?

做 Spring Cloud 开发的同学,对 Nacos 肯定不陌生。大家平常写代码,配置文件里只要配好 Nacos 地址,程序一启动,服务就自动注册上去了。但不知道大家有没有留意过一个细节:当你把服务停掉,或者直接 Kill 进…...

词向量做句子相似度已经落伍?深度解析词移距离(WMD)为何能成为语义匹配新宠!

在自然语言处理(NLP)领域,如何度量两个句子的语义相似度是一个基础且重要的问题。无论是智能客服、搜索引擎,还是文本去重、问答系统,都离不开快速准确的相似度计算。尤其是在工业界实时场景中(比如语音助手…...

华为CE6800交换机堆叠配置案例

新到了2台华为CE6857交换机, 需要配置堆叠 硬件型号:CE6857F-48S6CQ 示例拓扑:实际物理拓扑配置思路 采用如下的思路配置: 提前规划好堆叠方案。按照前期的规划,完成各台交换机的堆叠配置,包括堆叠成员ID、…...

5 个正在爆火的开源AI工具

在过去的 60 天里,一个名为 OpenClaw 的开源 AI 项目超越了 React,成为 GitHub 历史上获得最多星标的软件项目,累计获得超过 30 万颗星,揭示了向开发者现在所说的"智能体执行"的巨大转变。但 OpenClaw 已经太大了,不适合被低估。当科技媒体争相报道同样的五个项目时,…...

应该使用AI构建内部工具吗?

这是我目前发现的最有趣的讨论之一。这是关于你是否应该使用人工智能来构建自己的内部工具。 Chamath 在大约 6 周内构建了自己的 JIRA 工具。 我们的hacker团队刚刚使用 Software Factory 在一个多月内重建并替换了 Jira。我们首先花了 3.5 周的时间进行规划。这就是软件工厂…...

LLM可观测性:AI系统缺失的环节

您已部署LLM应用。它在测试中运行正常。用户开始使用它。 两周后,有人提交了一个错误。应用返回了错误答案。 您去检查发生了什么。没有日志,没有发送的提示词记录,没有模型接收到的内容记录,也没有知识库中检索器拉取的哪个块的…...

分发:AI的终极护城河

本周,我一直在思考分发,不是作为一种营销职能,而是作为AI的终极权力层。每家公司都在谈论模型,但真正的游戏是覆盖、控制和复合访问。我已经在这些行业中反复观察到这种模式。 这正是OpenAI传闻中的Agent Builder发布所正在上演的…...

第8篇:PI控制器设计实战演练

你是否遇到过? 明明啃完了上一篇《基于传递函数的PI控制器设计》理论,吃透了比例管响应、积分消静差的核心逻辑,可一落地工程调试就频频卡壳:对着传递函数不知道怎么转换成单片机能跑的代码,Python仿真效果完美&#x…...

调试线程应用程序

摘要:本章介绍了Python线程应用程序的调试方法,重点讲解了Python内置调试器pdb的使用。调试是软件开发中定位和修复错误的关键环节,pdb提供变量查看和代码逐行执行功能。通过import pdb;pdb.set_trace()插入断点,可使用n(下一步)、…...

直租累、中介烦、托管香?房东出租模式“痛点热力图”实测

引言:出租这件事,为何让房东又爱又怕? 2026年3月,在核心地段拥有一套老房源的业主陈女士发出疑问:“房子空了20天,租金降了300还是没人看,半夜还要接租客报修电话,我是不是该把房子托…...