2017-02-08 15 views
5

初めて初めてAWSサービスを試しています。 AWS pollyとアスタリスクを統合して、テキストを音声に変換する必要があります。ここpythonのAWS pollyサンプルの例ですか?

は私がエラー以下になっていますスピーチ

from boto3 import client 
import boto3 
import StringIO 
from contextlib import closing 

polly = client("polly", 'us-east-1') 
response = polly.synthesize_speech(
    Text="Good Morning. My Name is Rajesh. I am Testing Polly AWS Service For Voice Application.", 
    OutputFormat="mp3", 
    VoiceId="Raveena") 

print(response) 

if "AudioStream" in response: 
    with closing(response["AudioStream"]) as stream: 
     data = stream.read() 
     fo = open("pollytest.mp3", "w+") 
     fo.write(data) 
     fo.close() 

にテキストを変換するために書かれたコード例です。

Traceback (most recent call last): 
    File "pollytest.py", line 11, in <module> 
    VoiceId="Raveena") 
    File "/usr/local/lib/python2.7/dist-packages/botocore/client.py", line 253, in _api_call 
    return self._make_api_call(operation_name, kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/botocore/client.py", line 530, in _make_api_call 
    operation_model, request_dict) 
    File "/usr/local/lib/python2.7/dist-packages/botocore/endpoint.py", line 141, in make_request 
    return self._send_request(request_dict, operation_model) 
    File "/usr/local/lib/python2.7/dist-packages/botocore/endpoint.py", line 166, in _send_request 
    request = self.create_request(request_dict, operation_model) 
    File "/usr/local/lib/python2.7/dist-packages/botocore/endpoint.py", line 150, in create_request 
    operation_name=operation_model.name) 
    File "/usr/local/lib/python2.7/dist-packages/botocore/hooks.py", line 227, in emit 
    return self._emit(event_name, kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/botocore/hooks.py", line 210, in _emit 
    response = handler(**kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/botocore/signers.py", line 90, in handler 
    return self.sign(operation_name, request) 
    File "/usr/local/lib/python2.7/dist-packages/botocore/signers.py", line 147, in sign 
    auth.add_auth(request) 
    File "/usr/local/lib/python2.7/dist-packages/botocore/auth.py", line 316, in add_auth 
    raise NoCredentialsError 
botocore.exceptions.NoCredentialsError: Unable to locate credentials 

私はアスタリスクシステムアプリケーションでこれを使用できるように、このスクリプトで直接資格情報を提供したいと考えています。

UPDATE: はその作業罰金が、アスタリスクのPBXのためにそれが動作していない私の現在のログインユーザのためになりましコンテンツ以下

[default] 
aws_access_key_id=XXXXXXXX 
aws_secret_access_key=YYYYYYYYYYY 

でファイル〜/ .aws /信任状を作成しました。

答えて

2

あなたのコードは完全に正常に動作します!

最後の行が言っている:

botocore.exceptions.NoCredentialsError: Unable to locate credentials 

だから、AWSに対して認証することができません。

Amazon EC2インスタンスでこのコードを実行している場合、インスタンスを起動するときにインスタンスにIAMロールを割り当てるのが最も簡単な方法です(後で追加することはできません)。これにより、インスタンス上で実行されているアプリケーションで使用できる資格情報が自動的に割り当てられます。コード変更は必要ありません。

また、IAMユーザのアクセスキーと秘密鍵を入手して、aws configureコマンドを使用してローカルファイルに保存することもできます。

資格情報を侵害される可能性があるため、資格情報をソースコードに入れることは悪い習慣です。

参照:

+0

私は〜/ .aws/credentialsファイルを作成し、デフォルトセクションに提供しました。今私のユーザーのために働いています。しかしアスタリスクPBXのためにそれはエラーを与えている。 – rajesh6115

+0

「アスタリスクPBXでエラーが発生しました」とはどういう意味ですか? PBXは異なるユーザーアカウントで実行されますか。その場合は、そのユーザーのホームディレクトリにも資格情報ファイルを作成します。最悪の場合、コードに資格を入れることができます( 'client()の作成時に' aws_access_key_id = ACCESS_KEY、aws_secret_access_key = SECRET_KEY'を使います)、これは非常に安全な方法です。 –

+0

Pythonのユーザー設定ファイルをおかげで、設定ファイルに資格情報を保存しました。また、アスタリスクPBXとの統合も成功しました。 – rajesh6115

0

、通常はアスタリスクユーザーの下で実行さアスタリスクのPBXに注意してください。

したがって、rootではなく、そのユーザーの認証を設定しました。

関連する問題