写点什么

使用 Amazon Polly 提供实时家居监控警报

2019 年 11 月 08 日

使用 Amazon Polly 提供实时家居监控警报

_这是 Y-cam Solution 高级开发人员 Siva K. Syamala 撰写的客座博客文章。用她自己的话说,“Y-cam 是高质量安保视频解决方案提供商,我们的愿景是让智能家居安防系统变得简单,方便所有人使用。” | 原文链接


_


家居安防是家庭自动化和物联网的重要组成部分。Y-cam Solutions Limited 在 Amazon 的大力支持下,提供了一个智能安防系统,该系统可通过智能手机在世界任何地方进行监视和控制。为了改进警报、通知和系统控制方式,Y-cam 使用 Amazon Polly 提供一流的 AI 服务。利用该服务,用户可通过语音与安防系统进行交互。


我们的服务的工作方式

当触发报警时,我们通过 Twilio 以语音电话的方式通知客户。在建立呼叫后,Twilio 将逐步执行 TwiML 指令,并使用从 Amazon Polly 检索的合成语音开始向客户传送信息。电话接听方通过按手机键盘上的按钮 (DTMF 代码) 来做出回应。根据具体的 DTMF 代码,我们的服务会采取指定的操作,并返回从 Amazon Polly 检索的合成语音所对应的 TwiML 指令。为了让用户听起来像一个真实的对话,Amazon Polly 必须快速做出回应。延迟和等待会让人不满,并更有可能会导致接听方挂断电话。


下面是触发警报时向客户拨打的电话的示例音频剪辑。


00:00
00:00


架构


呼叫 Amazon Polly

以下 Java 代码说明了从 Amazon Polly 请求合成语音并将其存储在 S3 存储桶中的过程。


Java


public String convertTextToSpeech(final String text, final String polyVoiceId) {  log.info("Converting " + text + " to speech");  // Create speech synthesis request.  SynthesizeSpeechRequest synthesizeSpeechRequest = new SynthesizeSpeechRequest()  .withText(text)  .withVoiceId(polyVoiceId)  .withOutputFormat(OutputFormat.Mp3);
// Get the synthesized speech audio stream. SynthesizeSpeechResult synthesizeSpeechResult = awsPollyClient.synthesizeSpeech(synthesizeSpeechRequest);
// store audio stream of Polly to S3 as an MP3 file byte[] bytes = null; try { bytes = IOUtils.toByteArray(synthesizeSpeechResult.getAudioStream()); } catch (IOException e) { log.error("Could not get bytes from the audio stream " + e.getMessage()); }
ObjectMetadata omd = new ObjectMetadata(); omd.setContentType(synthesizeSpeechResult.getContentType()); omd.setContentLength(bytes.length); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); String fileName = getRandomString(); final PutObjectRequest s3Put = new PutObjectRequest(pollySpeechBucket, fileName, byteArrayInputStream, omd).withCannedAcl(CannedAccessControlList.PublicRead);
amazonS3Client.putObject(s3Put);
return S3URL;}
复制代码


为什么选择 Amazon Polly?

在使用 Amazon Polly 之前,我们使用过另一家 TTS 提供商,该提供商提供的语音不真实,并且存在可扩展性问题。很显然,机器人的声音不会带来良好的客户体验。我们希望声音更加自然,更加接近人类声音。Amazon Polly 为我们提供了一个非常简单、灵活、自然和可扩展的文本到语音的解决方案,而且成本非常低。另外,Amazon Polly 还支持不同的语音和语言。Amazon Polly 可以在数毫秒内处理数据,这样我们的客户不需要长时间等待回应。


未来的发展

我们计划在未来使用 Amazon Lex,以便客户可以向自己的家居安防系统发出控制命令,而不是输入 DTML 代码。Amazon Lex 提供了自动语音识别 (ASR) 的深度学习功能,可将语音转换为文本;并且提供了自然语言理解 (NLU) 来识别文本的意思。我们的目标是为用户提供全语音用户接口。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/using-amazon-polly-to-provide-real-time-home-monitoring-alerts/


2019 年 11 月 08 日 08:00122

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

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

响应式关系数据库处理R2DBC

程序那些事

MySQL R2DBC 程序那些事 响应式系统 响应式数据库

支撑2715​亿元海量订单 揭秘京东大促背后的数据库基石

京东科技开发者

数据库 数据仓库 云服务 云数据库

Java中NullPointerException的完美解决方案

Silently9527

java8 Optional

2020年底备战—从技术到面试合集

iOSer

ios 编程 面试题 大厂面试 面试题总结

厉害了!阿里内部都用的Spring+MyBatis源码手册,实战理论两不误

小Q

Java spring 学习 面试 mybatis

Java中的线程与C++中的区别

jiangling500

Java c++ 线程

这份算法攻略,我拿到了5个大厂的offer

yes的练级攻略

面试 算法 笔试

基于Vue实现一个有点意思的拼拼乐小游戏

徐小夕

Java GitHub H5游戏 H5 游戏开源

程序员如何判断跳槽岗位是否有坑!

Java架构师迁哥

读完某C++神作,我只记住了100句话

MySQL从删库到跑路

c++

SQL数据库集合运算

正向成长

SQL表联结 SQL集合运算

数字货币交易所开发源码,币币撮合交易系统搭建

WX13823153201

什么是服务器租用?

德胜网络-阳

甲方日常 52

句子

工作 随笔杂谈 日常

SpringBoot-技术专题-Hystrix学习介绍

李浩宇/Alex

为什么容器内存占用居高不下,频频 OOM

996小迁

Java 架构 容器 面试 k8s

这才是图文并茂:我写了1万多字,就是为了让你了解AQS是怎么运行的

鄙人薛某

Java 并发编程 AQS 并发 ReentrantLock

有点意思的gif动图生成平台开发实战(二)

徐小夕

Java Vue 前端 GIF React

2020双十一,阿里云GRTN拉开直播和RTC技术下半场的序幕

阿里云视频云

架构 云直播 直播 流媒体 直播架构

.net core增强工作流组件,基于稳定平台,多项目整合开发

雯雯写代码

影视剪辑类自媒体运营心得:如何抓住观众的痛点

石头IT视角

解读登录双因子认证(MFA)特性背后的TOTP原理

华为云开发者社区

算法 totp 密钥

区块链数字货币商城系统开发模式

薇電13242772558

区块链 数字货币

6个JDK自带JVM调优工具,一次性打包给你说清楚

田维常

jvm调优

Vokenization:一种比GPT-3更有常识的视觉语言模型

脑极体

【JVM】肝了一周,吐血整理出这份超硬核的JVM笔记(升级版)!!

冰河

性能优化 内存模型 JVM 堆栈 JVM笔记

直播卖货已成趋势

anyRTC开发者

音视频 WebRTC RTC

《程序员面试金典》.pdf

田维常

面试

微服务架构中的“参天大树”:SpringBoot+SpringCloud+Docker

小Q

Java 学习 容器 面试 微服务

超越竞争文化:致善式创新能否打造手机产业的“海法城”

脑极体

容器和虚拟机到底有啥区别?

网管

容器 虚拟机 容器化

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

使用 Amazon Polly 提供实时家居监控警报-InfoQ