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

零基础部署网站?使用天翼云服务搭建语音听写应用系统

目录

  • 前言
  • 一、服务器选择
  • 二、搭建语音听写系统
    • 1、创建云主机
    • 2、创建语音转写项目
    • 3、部署
      • (1)安装wget
      • (2)安装nginx
      • (3)安装nginx所需要的依赖包
      • (4)解压安装包
      • (5)执行配置脚本,--prefix是指定安装目录
      • (6)对nginx编译和安装
      • (7)启动nginx
      • (8)配置nginx
      • (9)更改安全组
      • (10)设置安全组
  • 三、数据安全无忧
    • 1、云灾备服务
    • 2、DDoS防护
    • 3、等保合规
  • 总结

前言

现在很多产品都加入了智能化的特性,比如在进行搜索的时候不需要手敲键盘而是直接通过语音就可以搜索,这大大减少了用户操作的复杂性。这里我将搭建一个语音听写系统部署在服务器上,由于海外的服务器在国内访问会加大延迟率,国内服务器层出不穷,鉴于成本、操作、性能等方面,最终我选择了方便、快捷的天翼云弹性云主机进行部署。

一、服务器选择

对比国内天翼云和国外的亚马逊云服务器 EC2的一些特点,比如:登录注册、成本、部署速度等,进行分析

亚马逊云服务器 EC2天翼云
成本成本高,按小时计费,灵活但长期使用成本较高 ①T4g.nano 0.5核0.5G内存,约444元/年 ②C6i.xlarge(4核8G内存),约1.7万元/年 ‌活动频繁,价格适中,国内部署高性价比① S3通用型云主机1核2G 免费试用一个月 ② S7通用型云主机2核4G 88元/年
注册注册复杂,需绑定 VISA/信用卡,流程繁琐手机号注册+实名认证
部署速度控制台复杂,部署耗时10-20分钟,适合有经验用户部署流程清晰,控制台友好,5分钟内完成部署
适用人群适合跨境企业、科研团队适合中小企业、政企单位、本地应用部署

二、搭建语音听写系统

主要技术:天翼云弹性主机+科大讯飞语音听写。

天翼云的弹性云主机的开通和使用非常便捷、高效,只需要指定CPU、内存、镜像等配置信息。可以像使用本地PC或物理服务器一样在云上使用弹性云主机,同时也可以按需随时调整弹性云主机的规格配置。
特别吸引我的还有一点就是可以按需选择弹性云主机计费方式,可选按量计费。

无需自建机房
无需自建机房告别了繁琐的硬件设施采购和配置,节省了大量时间和资金
多样化选择提供GPU云主机、x86和ARM架构的多种主机,满足不同工作负载的需求。
快速部署分钟级交付让我能快速上线应用,缩短了开发和测试周期。
按需扩展能够根据业务波动随时调整资源,避免了资源浪费和成本超支。
强大安全保障内置安全组、ACL、权限控制等多重防护,确保了数据和应用的安全。
主动监控与运维性能监控和运维支持,让云主机的稳定性和高效性得到了保障。
易用性标准API接口提高了开发和运维的便利性,适应了不同的行业需求。

1、创建云主机

打开天翼云免费试用中心,选择个人认证的S3通用型云主机1核2G,点击立即试用
在这里插入图片描述

在弹出框中点击立即试用
在这里插入图片描述

随后就开通了云主机服务
在这里插入图片描述

在我的控制台中可以看到创建的主机信息,点击远程登录即可连接服务器
在这里插入图片描述

它支持分钟级别批量创建,实例和带宽随时升降配,云盘可扩容,单实例可用性达 99.975%,多可用区多实例可用性达 99.995%,支持监控告警、漏洞修复、云盘加密,通过可信云认证、国标测评,单实例性能最高可达3000万PPS、100Gbps、100万IOPS。功能性和实用性非常强!

2、创建语音转写项目

下载科大讯飞官方语音转写demo
在这里插入图片描述

yarn creat vite 'project-name'
或者
npm init vite@latest 'project-name'

在这里插入图片描述

package.json配置项具体如下,我们需要安装一些依赖来支持语音识别demo适应vue3环境,不然会遇到很多问题:

 "dependencies": {"@originjs/vite-plugin-commonjs": "^1.0.3","@rollup/plugin-inject": "^5.0.3","ant-design-vue": "^3.2.15","jquery": "^3.6.2","vue": "^3.2.45","vue-router": "^4.1.6"},"devDependencies": {"@types/node": "^18.11.17","@vitejs/plugin-vue": "^4.0.0","crypto-js": "4.0.0","typescript": "^4.9.3","unplugin-auto-import": "^0.12.1","vconsole": "^3.15.0","vite": "^4.0.0","vue-tsc": "^1.0.11"}

在科大讯飞的js-demo中,并没有用到vue或者vite,我们实际开发时都会遇到let transWorker = new TransWorker()代码报错,比如:

报错1:TypeError:TransWorker is not a constructor
报错2:Uncaught SyntaxError: The requested module '/src/until/transcode.worker.js?t=1671455993687' does not provide an export named 'default'
为什么会报错呢?
import TransWorker from ‘js/transcode.worker.js引入了webWorker文件,webWorker相当于js中的线程,在主线程中启动一个子线程不影响ui。

web worker 是运行在后台的 JavaScript,不会影响页面的性能。 当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成。
web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能。您可以继续做任何愿意做的事情:点击、选取内容等等,而此时 web worker 在后台运行
在iat_ws.js(本人自定义的文件)文件里面const transWorker = new TransWorker() 报错,原因是vue里面不能直接使用原生的new Worker,vite中有专门关于webworker的配置项,详细请前往

const worker = new Worker(new URL(./worker.js’, import.meta.url))

所以需要将以下代码

 import TransWorker from './until/transcode.worker.js'let transWorker = new TransWorker()

改为如下

  const transWorker = new Worker(new URL('./until/transcode.worker.js', import.meta.url))

并且transcode.worker.js文件需要修改为如下所示:

  self.onmessage = function(e){transAudioData.transcode(e.data)}let transAudioData = {transcode(audioData) {let output = transAudioData.to16kHz(audioData)output = transAudioData.to16BitPCM(output)output = Array.from(new Uint8Array(output.buffer))self.postMessage(output)},to16kHz(audioData) {var data = new Float32Array(audioData)var fitCount = Math.round(data.length * (16000 / 44100))var newData = new Float32Array(fitCount)var springFactor = (data.length - 1) / (fitCount - 1)newData[0] = data[0]for (let i = 1; i < fitCount - 1; i++) {var tmp = i * springFactorvar before = Math.floor(tmp).toFixed()var after = Math.ceil(tmp).toFixed()var atPoint = tmp - beforenewData[i] = data[before] + (data[after] - data[before]) * atPoint}newData[fitCount - 1] = data[data.length - 1]return newData},to16BitPCM(input) {var dataLength = input.length * (16 / 8)var dataBuffer = new ArrayBuffer(dataLength)var dataView = new DataView(dataBuffer)var offset = 0for (var i = 0; i < input.length; i++, offset += 2) {var s = Math.max(-1, Math.min(1, input[i]))dataView.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7fff, true)}return dataView},}

3、部署

语音听写项目已经创建好之后,接下来就是部署了。
可以通过远程登录来进行操作,也可以通过其他客户端操作服务器。

(1)安装wget

yum install -y wget

(2)安装nginx

wget -c http://nginx.org/download/nginx-1.24.0.tar.gz

(3)安装nginx所需要的依赖包

yum install -y gcc-c++  zlib zlib-devel  openssl openssl-devel pcre pcre-devel

(4)解压安装包

tar -zxvf nginx-1.24.0.tar.gz

(5)执行配置脚本,–prefix是指定安装目录

#执行配置脚本 --prefix是指定安装目录
./configure --prefix=/usr/local/nginx

(6)对nginx编译和安装

#对nginx编译和安装
make & make install

(7)启动nginx

cd /usr/local/nginx/
ll

显示下图,那么nginx启动成功
在这里插入图片描述

(8)配置nginx

 server {listen       8070;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   /root/dist/html;index  index.html index.htm;}} 

(9)更改安全组

首先查看选用的是哪个安全组,
在这里插入图片描述

可以看到是default安全组
在这里插入图片描述

(10)设置安全组

选择安全组规则配置
在这里插入图片描述

对defalut 安全组进行配置,点击“配置规则”
在这里插入图片描述

点击添加规则,填写优先级、端口、源地址,随后点击确定
在这里插入图片描述

此时可以看到安全组添加成功
在这里插入图片描述

(11)打包项目
生成dist文件

yarn run build

(12)项目部署服务器
这里我将项目部署到服务器的/root路径下
在这里插入图片描述

(13)访问
浏览器地址输入http://ip:8070 ,这里ip替换成你自己的
在这里插入图片描述

点击开始识别
在这里插入图片描述

到这里语音听写系统就完成了,整个过程让我体验感非常好,服务器创建到项目部署,流程简单,耗费了很短时间,真的很nice

三、数据安全无忧

此外,系统上线到服务器之后,必须要保证系统的安全性以及数据的安全性,这是非常重要的,然而天翼云拥有云灾备服务、DDoS防护以及等保护合规,将系统的安全性能大大提高,安全感十足。

1、云灾备服务

云灾备服务确保了我的数据在任何情况下都可以得到恢复。无论是因误删还是因病毒攻击导致的数据丢失,天翼云的自动备份功能都能够让我随时恢复到最近的正常状态,极大地减少了数据丢失的风险。
在这里插入图片描述

2、DDoS防护

此外,天翼云还提供了免费DDoS防护,有效抵御了外部恶意攻击,确保了我的实验数据和用户隐私的安全。
在这里插入图片描述

3、等保合规

天翼云通过全面的网络架构安全、边界防护、入侵防范、访问控制及安全审计等功能,确保了云环境的高安全性和合规性,有效防止外部攻击、数据泄露和非法访问,满足国内等保合规要求,提供了一个全方位的安全防护体系。

总结

在语音听写系统开发以及部署的过程中,整个过程没有昂贵的硬件开销,开发效率还非常高,并且通过灵活的资源管理和多重安全保障,让系统开发能够顺利进行,可以随时根据我的需求进行弹性扩展,不再担心计算资源不足带来的影响。更重要的是,天翼云的价格非常透明,能够根据实际使用情况按需付费,大大降低了成本,这点确实很吸引我。

对于还未体验过天翼云的新朋友,不必担心高门槛的技术难度或成本压力,它可以让你以极低的成本尝试其高性价比的服务,比如:VPN连接、镜像服务、一站式智算服务平台、S3通用型云主机1核2G等服务,有的首次体验可免费试用一个月,有的甚至有的服务可以长期使用。操作上也完全不用担心,10分钟开通教程让你可以轻松完成账户注册与云服务器配置,免去繁琐的步骤。

http://www.lryc.cn/news/602342.html

相关文章:

  • Angular 依赖注入
  • 谷歌浏览器深入用法全解析:解锁高效网络之旅
  • 图像处理第三篇:初级篇(续)—— 照明的理论知识
  • C++算法之单调栈
  • 达梦数据库获取每个数据库表的总条数及业务实战
  • 提取excel中的年月日
  • window显示驱动开发—Direct3D 11 视频播放改进
  • 你的连接不是专用连接
  • NI Ettus USRP X440 软件无线电
  • 28天0基础前端工程师完成Flask接口编写
  • Go 语言-->指针
  • Java-数构排序
  • WAIC看点:可交付AI登场,场景智能、专属知识将兑现下一代AI价值
  • vue怎么实现导入excel表功能
  • 基于开源AI智能名片链动2+1模式与S2B2C商城小程序的微商品牌规范化运营研究
  • IDEA 手动下载安装数据库驱动,IDEA无法下载数据库驱动问题解决方案,IDEA无法连接数据库解决方案(通用,Oracle为例)
  • idea启动java应用报错
  • 设计模式十二:门面模式 (FaçadePattern)
  • 结合项目阐述 设计模式:单例、工厂、观察者、代理
  • 记一次IDEA启动微服务卡住导致内存溢出问题
  • Java设计模式之<建造者模式>
  • idea编译报错 java: 非法字符: ‘\ufeff‘ 解决方案
  • 解决windows系统下 idea、CLion 控制台中文乱码问题
  • 机器学习sklearn:不纯度与决策树构建
  • Rust实战:AI与机器学习自动炒饭机器学习
  • Linux系统Centos7 安装mysql5.7教程 和mysql的简单指令
  • 搭建HAProxy高可用负载均衡系统
  • 【拓扑排序 缩点】P2272 [ZJOI2007] 最大半连通子图|省选-
  • Linux应用开发基础知识——LInux学习FreeType编程(七)
  • 【C++进阶】---- 二叉搜索树