乐趣区

关于人工智能:几步操作轻松构建多语种语音到文本通知系统


Amazon Transcribe 是一个弱小的语音到文本转换服务,能够将不同语言的语音转录为文本内容,以供进一步解决。本文咱们会将该服务与物联网设施配合应用,构建一套可能反对多种语言的语音到文本告诉零碎,并将其用作「对讲门铃」的补充。

借助这样的一套告诉零碎,将可能检测造访人士、录制音频、将音频转录为文本、并通过咱们相熟的语言将文本发送至挪动设施端。这套解决方案中将用到以下服务:

  • AWS CloudFormation
  • AWS Lambda
  • Amazon Polly
  • Amazon Simple Notification Service (Amazon SNS)
  • Amazon Simple Storage Service (Amazon S3)
  • Amazon Transcribe

先决条件

要实现本计划,咱们须要做好以下筹备:

  • 运行有 Noobs 的 Raspberry Pi 4 设施
  • 接入该 Raspberry Pi 设施的超声波传感器
  • 麦克风
  • 扬声器
  • AWS 账户

工作流与架构

当传感器检测到指定范畴内的人员时,接入 Raspberry Pi 的扬声器会播放初始问候语,并提醒用户录制一条语音音讯。该录音将被发送至 Amazon S3,由后者触发 Lambda 函数以应用 Amazon Transcribe 将语音转录为文本。转录实现之后,用户将从 Amazon SNS 处接管转录的文本告诉。

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

Amazon Transcribe 应用的深度学习过程名为主动语音辨认(ASR),可能依照咱们选定的语种将语音疾速精确地转换为文本。它还能主动增加标点符号与格局,确保输入后果具备可与手动转录相媲美的准确度。咱们还能够应用自定义词汇表配置 Amazon Transcribe,以获取更精确的转录成果(例如,增加家中成员的姓名)。此外也能够通过配置词汇表去删除转录后果中的某些特定词汇(例如亵渎或者触犯性词语)。Amazon Transcribe 反对多种不同语言。对于更多详细信息,请参阅 Amazon Transcribe 是什么?

上传 CloudFormation 栈

本文将提供一套 CloudFormation 模板,该模板将创立一个输出 S3 存储桶,用于触发 Lambda 函数以将音频转录为文本,而后通过 SNS 告诉将文本发送给用户。当然,模板中也蕴含实现上述流程所须要的权限。

  1. 下载 CloudFormation 模板。
  2. 在 AWS CloudForamtion 管制台上,抉择 Upload a template file。
  3. 抉择曾经下载实现的文件。
  4. 抉择 Next。
  5. 在 Stack Name 局部,输出栈名称。
  6. 在 Parameters 下,应用以下输出对模板参数进行更新


7. 抉择 Next。
8. 在 Options 页面上,抉择 Next。
9. 在 Review 页面上,查看并确认各项设置。
10. 选定勾选框以确认由模板创立相干 IAM 资源。
11. 抉择 Create。

大家能够在 AWS CloudFormation 管制台上查看栈状态。通常应该会在 5 分钟左右看到状态转换为 CREATE_COMPLETE
12. 从 Outputs 中记录 BucketName 与 RaspberryPiUserName。

下载欢送音讯

要下载欢送音讯,请实现以下步骤:

  1. 在 Amazon Polly 控制台的 Plain text 选项卡上,输出欢送信息。
  2. 在 Language and Region 局部,抉择首选语言。
  3. 抉择 Download MP3。

4. 将该文件重命名为 greetings.mp3。

5. 将文件挪动至 raspberrypi/home/pi/Downloads/ 文件夹。

设置 AWS IoT 凭证提供程序

设置 AWS IoT 凭证之后,咱们能力平安地对物联网设施进行身份验证。对于具体操作阐明,请参阅如何应用 AWS IoT 凭证提供程序打消设施中的 AWS 硬编码凭证需要。在该文第 3 步中增加以下策略,以将文件上传至 Amazon S3(而非更新 Amazon DynamoDB 表):

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

设置 Raspberry Pi

要设置 Raspberry Pi,请实现以下操作步骤:

  1. 在 Raspberry Pi 上,关上终端并装置 AWS CLI。
  2. 为传感器创立一个 Python 文件与代码,以检测人员对象是否处于特定范畴(例如 30 厘米到 200 厘米)之间。如果是,播放欢送音讯,在指定时段内(例如 20 秒)录制音频,而后将音频发送至 Amazon S3。具体请参见以下示例代码。
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")
  1. 运行 Python 文件。

超声波传感器会一直寻找正靠近家门左近的人员。当检测到有人时,扬声器会播放欢送音讯并要求访客开始录音。录音随后会被发送到 Amazon S3。

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

测试解决方案

将 Raspberry Pi 搁置在家中可能感知到别人并录制音频的地位。

当该人呈现在 Raspberry Pi 背后时,他们应该听到欢送音讯。他们能够在录制音频后来到,而咱们可能收到由录制音频转录而成的文本短信。

总结

本文展现了如何应用 AWS 服务构建平安的语音到文本告诉解决方案。如果在将来的利用场景中须要应用多种不同语言,将语音内容转换为文本,则能够间接集成这套解决方案。

退出移动版