使用 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 配合物聯網設備構建一套支持多語種的語音到文本通知系統

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