使用 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 配合物联网设备构建一套支持多语种的语音到文本通知系统

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章