Was this page helpful?

Amazon Polly TTS

    說明

    Amazon Polly 是將文字轉換成逼真說話方式的服務,能夠讓您建立會說話的應用程式和打造全新的啟用語音產品類別。Amazon Polly 是運用先進深度學習技術的文字轉換語音服務,合成語音聽起來就像真人發音一樣。

    它提供多種語言的數十種逼真語音,您可以選取最合適的語音來建立多國使用並啟用語音功能的應用程式。

    AWS Polly 首頁:https://aws.amazon.com/tw/polly/

    AWS Polly TTS 特性

    AWS Setup

    1. 登入 AWS Console
    2. 新增 IAM 帳號
    3. 設定 Group 時,加入權限 AmazonPollyReadOnlyAccess
    4. 記下帳號的 Access Key ID 與 Secret Access Key。

    NOTE: 一組 Key ID 對應一組 Secret Key,而 Secret Key 只會出現一次,必須立即記下;如果遺失,只能重新再產生另一組 Access Key ID。

    Install Node.js

    curl -sL https://rpm.nodesource.com/setup | bash -
    yum install nodejs
    yum install gcc-c++ make
    

    NOTE:

    模組 child_process 必須有 node.js v0.11 以上版本,如果不是,繼續下面步驟

    安裝 Node.js v0.12.7

    #> npm cache clean -f
    #> npm install -g n
    #> n 0.12.7
    
         install : node-v0.12.7
           mkdir : /usr/local/n/versions/node/0.12.7
           fetch : https://nodejs.org/dist/v0.12.7/node-v0.12.7-linux-x86.tar.gz
    ######################################################################## 100.0%
       installed : v0.12.7
    

    執行時記得改用

    /usr/local/n/version/node/0.12.7/bin/node your.js

    Install AWS SDK for Node.js

    cd /opt/
    git clone https://github.com/awslabs/aws-nodejs-sample
    cd aws-nodejs-sample
    npm install
    npm install optimist
    npm install child_process
    

    新增 script.js

    vi script.js

    #!/bin/env node
    
    // Load the SDK
    var argv = require('optimist').argv;
    const AWS = require('aws-sdk')
    const Fs = require('fs')
    var child_process = require('child_process');
    
    // Create an Polly client
    const Polly = new AWS.Polly({
    accessKeyId: "accessKeyId here",
    secretAccessKey: "secretAccesKey here",
    signatureVersion: "v4",
    region: 'us-east-1'
    
    })
    
    var params = {
    'Text': argv.text,
    // 'Text': 'Titanic',
    'OutputFormat': 'mp3',
    'SampleRate': '8000',
    'VoiceId': 'Kimberly'
    };
    
    Polly.synthesizeSpeech(params, function(err, data) {
    if (err) {
        console.log(err.code)
    } else if (data) {
        if (data.AudioStream instanceof Buffer) {
            Fs.writeFile(argv.mp3, data.AudioStream, function(err) {
            if (err) {
                return console.log(err)
            }
            console.log("The file was saved!")
            var output = child_process.execSync('lame --decode ' + argv.mp3 + ' ' + '-b 8000' + ' ' + argv.wav );
    
            })
         }
    }
    });

    測試 TTS

    cd /opt/aws-nodejs-sample/
    /usr/local/n/versions/node/0.12.7/bin/node script.js --mp3=/tmp/mytest.mp3 --text="Please hold while we get the headlines." --wav=/tmp/mytest.wav
    
    Was this page helpful?
    標籤 (Edit tags)
    • No tags
    您必須 登入 才能發佈評論。
    Powered by MindTouch Core