写点什么

使用 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:001240

评论

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

redis数据结构之压缩列表

急需上岸的小谢

9月月更

设计模式的艺术 第二十四章策略设计模式练习(开发一款飞机模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征,为了将来能够模拟更多种类的飞机,试采用策略模式设计该飞机模拟系统)

代廉洁

设计模式的艺术

C++学习------cstdint头文件的源码学习

桑榆

c++ 源码阅读 9月月更

设计模式的艺术 第二十五章模板方法设计模式练习(用模板方法模式开发一个数据库操作模块,用户只需将SQL语句作为参数传入模板方法,则可实现连接数据库、打开数据库、操作数据库(查询或更新)、关闭数据库等操作)

代廉洁

设计模式的艺术

新零售SaaS架构:商品系统架构设计

AI架构师汤师爷

系统架构 SaaS 新零售

5 个 JavaScript 写法小技巧分享

掘金安东尼

JavaScript 9月月更

好代码的五个特质-CUPID

Bright

敏捷 DDD TDD

如何不编写 YAML 管理 Kubernetes 应用?

北京好雨科技有限公司

LeetCode-35. 搜索插入位置(java)

bug菌

9月日更 Leet Code 9月月更

你真的理解C语言中的 “ 数组 ” 吗?(初阶篇)

Albert Edison

数组 C语言 开发语言 二维数组 9月月更

leetcode 148. Sort List 排序链表(中等)

okokabcd

LeetCode 算法与数据结构

「趣学前端」SVG,边学边做

叶一一

JavaScript 前端 9月月更

从改善设计的角度理解TDD (2)

Bright

敏捷 TDD

我理解的Smart Domain与DDD

Bright

敏捷 DDD TDD

LeetCode-53. 最大子数组和(java)

bug菌

9月日更 Leet Code 9月月更

Java进阶(四)Java反射TypeToken解决泛型运行时类型擦除问题

No Silver Bullet

Java 反射 9月月更 typeToken

FreeRTOS记录(一、熟悉开发环境以及CubeMX下FreeRTOS配置)

矜辰所致

STM32CubeMX FreeRTOS 9月月更

从改善设计的角度理解TDD

Bright

敏捷 TDD

C语言:位段、枚举、联合体

孤衫

后端 C语言 枚举 9月月更

Alibaba内传(2022更新版《面试速成手册》)流出,熬夜看到176页,YYDS!

程序知音

Java 阿里 程序员面试 后端技术 Java面试八股文

Mavan:自定义骨架及工程初始化

程序员架构进阶

maven 低代码 9月日更 9月月更

用TDD开发基于数据库的长时任务系统

Bright

敏捷 DDD TDD

mysql进阶

楠羽

MySQL 笔记 9月月更

容灾数据一致性保障探讨

agnostic

容灾 CAP

拆分电商系统为微服务

张立奎

已献出膝盖!GitHub上的宝藏级SpringBoot核心文档,讲得太清晰了

退休的汤姆

程序员 面经 面试技巧 秋招 Java八股文

四天拿捏Spring Security?这份清华大佬总结的笔记究竟有多离谱

了不起的程序猿

Java spring 程序员 JAVA开发 spring security

「知识点」曾经忽略的arguments

叶一一

JavaScript 前端 9月月更

大型网站架构

源字节1号

软件架构 后端开发

如何看待2023年秋招技术岗哀鸿遍野?

退休的汤姆

程序员 互联网 面试 社招 秋招

神级编程网站,堪称程序员的充电站,我给你找好了不能错过

C语言与CPP编程

编程 程序员 网站 计算机 编程语言‘

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