2017-02-08 10 views
5

Pierwszy raz Próbuję usług AWS. Muszę zintegrować polaryzację AWS z gwiazdką dla tekstu z mową.Przykładowy przykład Polly AWS w python?

tutaj jest przykład kodu I napisał do konwersji tekstu na mowę

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() 

otrzymuję następujący błąd.

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 

Chcę podać poświadczenia bezpośrednio w tym skrypcie, dzięki czemu mogę używać tego w aplikacji systemu gwiazdkowego.

UPDATE: utworzony plik ~/.aws/poświadczeń z poniższej treści

[default] 
aws_access_key_id=XXXXXXXX 
aws_secret_access_key=YYYYYYYYYYY 

teraz dla mojego bieżącego użytkownika logowania grzywny działa, ale dla Asterisk PBX to nie działa.

Odpowiedz

2

Twój kod działa doskonale dla mnie!

Ostatnia linia mówi:

botocore.exceptions.NoCredentialsError: Unable to locate credentials 

Tak, to jest w stanie uwierzytelnić AWS.

Jeśli używasz tego kodu w instancji Amazon EC2, najprostszą metodą jest przypisanie roli IAM do instancji, gdy jest uruchamiana (nie można jej później dodać). Spowoduje to automatyczne przypisanie referencji, których może używać aplikacja uruchomiona na instancji - nie są wymagane żadne zmiany kodu.

Można również uzyskać klucz dostępu i tajny klucz od użytkownika IAM dla użytkownika IAM i zapisać te poświadczenia w lokalnym pliku za pomocą komendy aws configure.

Złym zwyczajem jest umieszczanie poświadczeń w kodzie źródłowym, ponieważ mogą one zostać naruszone.

Patrz:

+0

Utworzono plik ~/.aws/credentials i podałem referencje w sekcji domyślnej. teraz działa dla mojego użytkownika. Ale w przypadku Asterisk PBX daje błąd. – rajesh6115

+0

Co masz na myśli przez "Ale dla Asterisk PBX daje błąd"? Czy PBX działa pod innym kontem użytkownika? W takim przypadku utwórz plik poświadczeń również w katalogu domowym tego użytkownika. Najgorszy przypadek, w którym możesz umieścić referencje w kodzie (użyj 'aws_access_key_id = ACCESS_KEY, aws_secret_access_key = SECRET_KEY' podczas tworzenia' client() '), ale jest to bardzo niebezpieczna metoda. –

+0

Dzięki I plik konfiguracyjny użytkownika w Pythonie i przechowywane poświadczenia w pliku konfiguracyjnym. Z powodzeniem zintegrowana również z gwiazdką PBX. – rajesh6115

0

Uwaga, Asterisk PBX zwykle prowadzone pod użytkownikiem gwiazdką.

Więc umieściłeś uwierzytelnienie dla tego użytkownika, a nie root.

Powiązane problemy