写点什么

使用 AWS Transcribe 配合物联网设备构建一套支持多语种的语音到文本通知系统

  • 2020-09-13
  • 本文字数:3079 字

    阅读完需:约 10 分钟

使用 AWS Transcribe 配合物联网设备构建一套支持多语种的语音到文本通知系统

Original URL: https://aws.amazon.com/cn/blogs/machine-learning/building-a-speech-to-text-notification-system-in-different-languages-with-aws-transcribe-and-an-iot-device/


您是否希望访客能在您不在家时给您留言?是否希望这样的解决方案能够支持您惯常使用的母语?其实很简单,我们可以轻松构建起这样一套具有成本效益的解决方案,而且只需要为实际使用的资源付费。


本文将向大家介绍如何构建一套通知系统,其能够检测造访人士、录制音频、将音频转录为文本、并通过您熟悉的语言将文本发送至移动设备端。这套解决方案中将用到以下服务:


先决条件

要完成本轮演练,您需要做好以下准备:


工作流与架构

当传感器检测到指定范围内的人员时,接入 Raspberry Pi 的扬声器会播放初始问候语,并提示用户录制一条语音消息。该录音将被发送至 Amazon S3,由后者触发 Lambda 函数以使用 Amazon Transcribe 将语音转录为文本。转录完成之后,用户将从 Amazon SNS 处接收转录的文本通知。


下图所示,为这套解决方案的工作流程。



Amazon Transcribe 使用的深度学习过程名为自动语音识别(ASR),能够按照您选定的语种将语音快速准确地转换为文本。它还能自动添加标点符号与格式,确保输出结果具有可与手动转录相媲美的准确度。您还可以使用自定义词汇表配置 Amazon Transcribe,以获取更准确的转录效果(例如,添加家中成员的姓名)。您也可以通过配置词汇表去删除转录结果中的某些特定词汇(例如亵渎或者冒犯性词语)。Amazon Transcribe 支持多种不同语言。关于更多详细信息,请参阅Amazon Transcribe是什么?

上传 CloudFormation 栈

本文将提供一套 CloudFormation 模板,该模板将创建一个输入 S3 存储桶,用于触发 Lambda 函数以将音频转录为文本,而后通过 SNS 通知将文本发送给用户。当然,模板中也包含完成上述流程所需要的权限。


  • 下载 CloudFormation模板

  • 在 AWS CloudForamtion 控制台上,选择 Upload a template file

  • 选择您已经下载完成的文件。

  • 选择 Next

  • Stack Name 部分,输入您的栈名称。

  • Parameters 下,使用以下输入对模板参数进行更新


参数默认说明
MobileNumber必填一个可接收SNS通知的有效手机号码。
LanguageCode必填音频文件的语言代码,例如English US。
SourceS3Bucket必填一个唯一的存储桶名称。


  • 选择 Next

  • Options 页面上,选择 Next

  • 在 Review 页面上,查看并确认各项设置。

  • 选定勾选框以确认由模板创建相关 IAM 资源。

  • 选择 Create


大家可以在 AWS CloudFormation 控制台上查看栈状态。您应该会在 5 分钟左右内看到状态转换为CREATE_COMPLETE


  • Outputs 中记录 BucketNameRaspberryPiUserName

下载欢迎消息

要下载欢迎消息,请完成以下步骤:


  • 在 Amazon Polly 控制台的 Plain text 选项卡上,输入您的欢迎信息。

  • Language and Region 部分,选择您的首选语言。

  • 选择 Download MP3



  • 将该文件重命名为greetings.mp3

  • 将文件移动至raspberrypi /home/pi/Downloads/文件夹。

设置 AWS IoT 凭证提供程序

设置 AWS IoT 凭证之后,我们才能安全地对物联网设备进行身份验证。关于具体操作说明,请参阅如何使用AWS IoT凭证提供程序消除设备中的AWS硬编码凭证需求。在该文第 3 步中添加以下策略,以将文件上传至 Amazon S3(而非更新 Amazon DynamoDB 表):


Json


             {                "Version": "2012-10-17",                "Statement": {                  "Effect": "Allow",                  "Action": [                    "s3:PutObject"                  ],                  "Resource": "arn:aws:s3:::<sourceS3Bucket>"                }              }
复制代码

设置 Raspberry Pi

要设置 Raspberry Pi,请完成以下操作步骤:


  • 在 Raspberry Pi 上,打开终端并安装AWS CLI

  • 为传感器创建一个 Python 文件与代码,以检测人员对象是否处于特定范围(例如 30 厘米到 200 厘米)之间。如果是,播放欢迎消息,在指定时段内(例如 20 秒)录制音频,而后将音频发送至 Amazon S3。具体请参见以下示例代码。


Json


 while True:        GPIO.setmode(GPIO.BOARD)       #Setting trigger and echo pin from ultrasonic sensor        PIN_TRIGGER = 7        PIN_ECHO = 11        GPIO.setup(PIN_TRIGGER, GPIO.OUT)        GPIO.setup(PIN_ECHO, GPIO.IN)        GPIO.output(PIN_TRIGGER, GPIO.LOW)
print ("Waiting for sensor to settle") time.sleep(2)
print ("Calculating distance") GPIO.output(PIN_TRIGGER, GPIO.HIGH) time.sleep(0.00001) GPIO.output(PIN_TRIGGER, GPIO.LOW) while GPIO.input(PIN_ECHO)==0: pulse_start_time = time.time() while GPIO.input(PIN_ECHO)==1: pulse_end_time = time.time() pulse_duration = pulse_end_time - pulse_start_time print(pulse_end_time) print(pulse_end_time) #Calculating distance in cm based on duration of pulse. distance = round(pulse_duration * 17150, 2) print ("Distance:",distance,"cm")

if 30 <= distance <= 200: cmd = "ffplay -nodisp -autoexit /home/pi/Downloads/greetings.mp3" print ("Starting Recorder") os.system(cmd) #Recording for 20 seconds, adding timestamp to the filename and sending file to S3 cmd1 ='DATE_HREAD=$(date "+%s");arecord /home/pi/Desktop/$DATE_HREAD.wav -D sysdefault:CARD=1 -d 20 -r 48000;aws s3 cp /home/pi/Desktop/$DATE_HREAD.wav s3://homeautomation12121212' os.system(cmd1)
else: print ("Nothing detected")
复制代码


  • 运行 Python 文件。


超声波传感器会不断寻找正接近您家附近的人员。当检测到有人时,扬声器会播放欢迎消息并要求访客开始录音。录音随后会被发送到 Amazon S3。


如果您的扬声器与麦克风接入多个设备,例如 HDMI 与 USB,请配置asoundrc文件。

测试解决方案

将 Raspberry Pi 放置在您家中能够感知到他人并录制音频的位置。


当该人出现在 Raspberyy Pi 面前时,他们应该听到欢迎消息。他们可以在录制音频后离开,而您能够收到由录制音频转录而成的文本短信。

总结

本文展示了如何使用 AWS 服务构建安全的语音到文本通知解决方案。如果您在未来的应用场景中需要使用多种不同语言,将语音内容转换为文本,则可以直接集成这套解决方案。如果您有任何问题或者意见,请在评论区中与我们交流。


作者介绍


Vikas Shah


Amazon Web Services 公司企业级解决方案架构师。他是一位技术爱好者,乐于帮助客户为复杂的业务挑战找到创新型解决方案。他对机器学习、物联网、机器人技术以及存储抱有浓厚兴趣。在业余时间,Vikas 喜欢组装机器人、远足和旅行。


Anusha Dharmalingam


Amazon Web Services 公司解决方案架构师。她对应用程序开发与大数据解决方案充满热情。Anusha 与企业客户合作,帮助他们设计、构建并扩展用于实现业务目标的应用程序。


本文转载自亚马逊 AWS 官方博客。


原文链接


使用 AWS Transcribe 配合物联网设备构建一套支持多语种的语音到文本通知系统


2020-09-13 10:001531

评论

发布
暂无评论
发现更多内容

超越身边80%的人,其实没有你想象的那么难

架构精进之路

认知提升 成长笔记 七日更 28天写作

【得物技术】代码覆盖率原理与得物app实践

得物技术

测试 原理 代码 得物技术 覆盖率

9. 细节见真章,Formatter注册中心的设计很讨巧

YourBatman

Converter ConversionService Formatter

极客训练营知识点思维导图

jorden wang

安卓开发实战!闭关在家37天“吃透”这份345页PDF,成功定级腾讯T3-2

欢喜学安卓

android 程序员 面试 移动开发

[5/28]产品运维保障体系的质量实践

L3C老司机

我们为什么打比方

石云升

28天写作 确认偏误 打比方

百度面试被算法血虐,闭关29天肝完445页算法神仙笔记成功入职字节跳动!

Java架构之路

Java 程序员 架构 面试 编程语言

技术人员如何写好周报

猿话

电商网站商品管理(二)多种搜索方式

escray

elasticsearch elastic 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

一文带你学会AQS和并发工具类的关系

伯阳

AQS java 并发 ReentrantLock 多线程高并发 lock锁

Nginx 的负载均衡模式有哪些?它的实现原理是什么?

李尚智

nginx 架构 微服务

PHP转JAVA开发30分钟实战攻略

dothetrick

Java php

2021字节、华为、滴滴Java内部面试题(含答案),新鲜出炉!

比伯

Java 编程 架构 面试 程序人生

架构师第八周总结

Geek_xq

APICloud AVM多端开发 |《生鲜电商app开发》项目源码教程

YonBuilder低代码开发平台

大前端 移动开发 APP开发 APICloud

在GitHub中向开源项目提交PR的过程

worry

GitHub pull request

2021年,字节/百度/阿里相继发布50W+优质Java岗(含内部面试真题及答案)

996小迁

Java 程序员 架构 面试

架构师训练营第十三周笔记

李日盛

笔记

华云大咖说|企业混合云构建之道

华云数据

云计算 桌面云

为什么印度不会成为世界工厂?

JiangX

印度 28天写作 世界工厂

从姚安娜出道说起

三只猫

28天写作 社交泛娱乐

矿机挖矿软件系统开发|矿机挖矿APP开发

系统开发

区块链2021狂想曲:迎接以技术为名的春天

脑极体

架构师第8周作业

Geek_xq

Java 程序经验小结:剖析@SuppressWarinings注解

后台技术汇

28天写作

训练营第十三周作业

大脸猫

二本学渣考研失败,为什么Android要采用Binder作为IPC机制?已开源

欢喜学安卓

android 程序员 面试 移动开发

GitHub标星150K的神仙笔记,3个月肝完成功面进美团定级3-2

Java架构之路

Java 程序员 架构 面试 编程语言

使用 kubectl-rabbitmq 部署和运维 K8S 上的 RabbitMQ 集群

郭旭东

RabbitMQ kubectl kubectl plugin

技术创新是PC市场发展基石,英特尔占据明显领先优势

E科讯

使用 AWS Transcribe 配合物联网设备构建一套支持多语种的语音到文本通知系统_大数据_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章