Amazon Polly - Manuel du développeur
Transcription
Amazon Polly - Manuel du développeur
Amazon Polly Manuel du développeur Amazon Polly Manuel du développeur Amazon Polly Manuel du développeur Amazon Polly: Manuel du développeur Copyright © 2017 Amazon Web Services, Inc. and/or its affiliates. All rights reserved. Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's, in any manner that is likely to cause confusion among customers, or in any manner that disparages or discredits Amazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may not be affiliated with, connected to, or sponsored by Amazon. Amazon Polly Manuel du développeur Table of Contents Définition d'Amazon Polly ............................................................................................................... 1 Vous utilisez Amazon Polly pour la première fois ? .................................................................... 2 Fonctionnement ............................................................................................................................ 3 Quelle est la prochaine étape ? .............................................................................................. 3 Mise en route ............................................................................................................................... 5 Étape 1 : Configurer un compte et un utilisateur ........................................................................ 5 Étape 1.1 : S'inscrire à AWS .......................................................................................... 5 Étape 1.2 : Création d'un utilisateur IAM ........................................................................... 6 Étape suivante ............................................................................................................. 7 Étape 2 : Démarrer à l'aide de la console ................................................................................. 7 Exercice 1 : Procédure de démarrage rapide Synthèse vocale (Console) ............................... 7 Exercice 2 : Synthèse vocale (entrée de texte brut) ............................................................ 7 Étape suivante ............................................................................................................. 8 Étape 3 : Démarrer à l'aide de l'AWS CLI ................................................................................. 8 Étape 3.1 : Configuration de l'AWS CLI ............................................................................ 8 Étape 3.2 : Exercice de mise en route ............................................................................ 10 Quelle est la prochaine étape ? ............................................................................................. 12 Configuration de Python et test d'un exemple .................................................................. 12 Utilisation de SSML ..................................................................................................................... 14 Utilisation de SSML avec la console ...................................................................................... 14 Utilisation de SSML avec la console Amazon Polly ........................................................... 14 Étape suivante ............................................................................................................ 15 Utilisation de SSML avec l'AWS CLI ...................................................................................... 15 Exemple 1 : Transmission de SSML via la commande de synthèse vocale ............................ 15 Exemple 2 : Synthétiser un document SSML entier ........................................................... 16 Exemple 3 : Utilisation des balises SSML courantes ......................................................... 16 Exemple 4 : Contrôle de la prononciation ........................................................................ 19 Gestion des lexiques ................................................................................................................... 21 Application de plusieurs lexiques ........................................................................................... 21 Gestion des lexiques à l'aide de la console ............................................................................. 22 Chargement des lexiques à l'aide de la console ............................................................... 23 Application de lexiques à l'aide de la console (Synthèse vocale) ......................................... 23 Filtrage de la liste des lexiques à l'aide de la console ....................................................... 24 Téléchargement des lexiques à l'aide de la console .......................................................... 25 Suppression d'un lexique à l'aide de la console ............................................................... 25 Gestion des lexiques à l'aide d'AWS CLI ................................................................................ 25 PutLexicon ................................................................................................................. 26 GetLexicon ................................................................................................................. 31 ListLexicons ................................................................................................................ 33 DeleteLexicon ............................................................................................................. 34 Exemples d'applications ............................................................................................................... 36 Exemple Python .................................................................................................................. 37 Exemple Python : index.html ......................................................................................... 38 Exemple Python : server.py .......................................................................................... 41 Exemple Android ................................................................................................................. 48 Exemple iOS ...................................................................................................................... 50 Restrictions ................................................................................................................................ 52 Régions prises en charge ..................................................................................................... 52 Limitation ........................................................................................................................... 52 Lexiques de prononciation .................................................................................................... 53 Opération API SynthesizeSpeech .......................................................................................... 53 Synthèse vocale SSML (Markup Language) ............................................................................ 53 Intégration de CloudTrail .............................................................................................................. 54 Informations relatives à Amazon Polly dans CloudTrail .............................................................. 54 Présentation des entrées des fichiers journaux Amazon Polly ..................................................... 55 iv Amazon Polly Manuel du développeur Intégration de CloudWatch ........................................................................................................... 57 Métriques CloudWatch (Console) ........................................................................................... 57 Métriques CloudWatch (Interface de ligne de commande) .......................................................... 57 Métriques Amazon Polly ....................................................................................................... 58 Dimensions pour les métriques Amazon Polly .......................................................................... 59 API Reference ............................................................................................................................ 60 Actions .............................................................................................................................. 60 DeleteLexicon ............................................................................................................. 61 DescribeVoices ........................................................................................................... 63 GetLexicon ................................................................................................................. 65 ListLexicons ................................................................................................................ 67 PutLexicon ................................................................................................................. 69 SynthesizeSpeech ....................................................................................................... 71 Data Types ........................................................................................................................ 73 Lexicon ...................................................................................................................... 74 LexiconAttributes ......................................................................................................... 75 LexiconDescription ...................................................................................................... 76 Voice ......................................................................................................................... 77 Authentification et contrôle d'accès ................................................................................................ 78 Authentification ................................................................................................................... 78 Contrôle d'accès ................................................................................................................. 79 Présentation de la gestion de l'accès ..................................................................................... 80 Ressources et opérations Amazon Polly ......................................................................... 80 Présentation de la propriété des ressources .................................................................... 81 Gestion de l'accès aux ressources ................................................................................. 81 Spécification des éléments d'une stratégie : actions, effets et mandataires ............................ 82 Spécification des conditions dans une stratégie ............................................................... 83 Utilisation des stratégies basées sur une identité (stratégies IAM) ............................................... 83 Autorisations requises pour utiliser la console Amazon Polly .............................................. 84 Stratégies gérées par AWS (stratégies prédéfinies) pour Amazon Polly ................................ 85 Exemples de stratégies gérées par le client .................................................................... 85 Référence des autorisations de l'API Amazon Polly .................................................................. 88 Historique du document ............................................................................................................... 90 Glossaire AWS ........................................................................................................................... 91 v Amazon Polly Manuel du développeur Définition d'Amazon Polly Amazon Polly est un service de cloud qui convertit un texte en un discours réaliste. Vous pouvez utiliser Amazon Polly pour développer des applications qui optimisent l'implication et améliorent l'accessibilité. Amazon Polly prend en charge plusieurs langues et propose différentes voix réelles, ce qui vous permet d'élaborer des synthèses vocales adaptées à plusieurs endroits et d'utiliser la voix idéale pour vos clients. Avec Amazon Polly, vous ne payez que pour le texte que vous avez synthétisé. Vous pouvez également mettre en cache et réécouter le discours généré d'Amazon Polly sans frais supplémentaire. Les cas d'utilisation courants d'Amazon Polly incluent, sans s'y limiter, des applications mobiles telles que des lecteurs, des jeux, des plateformes d'apprentissage en ligne, des applications pour personnes malvoyantes, ainsi que le secteur en forte expansion de l'Internet des objets (IdO). Amazon Polly n'est pas certifié pour être utilisé avec des charges de travail réglementées comme la norme PCI (Payment Card Industry) DSS (Data Security Standard), HIPAA (Health Insurance Portability and Accountability Act de 1996) ou FedRAMP. Parmi les avantages liés à l'utilisation d'Amazon Polly, on note : • Haute qualité – Amazon Polly utilise une technologie de synthèse vocale (TTS) de première qualité pour synthétiser le discours naturel avec une précision élevée de prononciation (comprenant notamment les abréviations, les expansions d'acronymes, les interprétations de date/heure et la désambiguïsation des homographes). • Faible latence – Amazon Polly garantit des temps de réponse rapides, qui en font une option viable pour des cas d'utilisation à faible latence tels que les systèmes de dialogue. • Prise en charge d'un large éventail de langues et de voix – Amazon Polly prend en charge 47 voix et 24 langues, avec des options de voix d'hommes et de femmes pour la plupart des langues. • Rentabilité – Le modèle de paiement uniquement à l'utilisation d'Amazon Polly implique qu'il n'y a aucun coût d'installation. Vous pouvez commencer sur une petite échelle et augmenter au fur et à mesure du développement de votre application. • Solution basée sur le Cloud – Solutions de synthèse vocale sur l'appareil qui nécessitent des ressources informatiques conséquentes, notamment la puissance de l'UC, la mémoire RAM 1 Amazon Polly Manuel du développeur Vous utilisez Amazon Polly pour la première fois ? et l'espace disque. Elles peuvent entraîner des coûts de développement plus élevés et une consommation d'énergie plus importante sur des appareils tels que des tablettes, des smartphones, etc. En revanche, la conversion d'un texte en voix effectuée dans le cloud permet de réduire considérablement les besoins en ressources locales. Cela permet de prendre en charge toutes les langues et les voix disponibles avec la meilleure qualité possible. En outre, des améliorations au niveau des discours sont instantanément disponibles pour tous les utilisateurs finaux et ne requièrent pas d'autres mises à jour au niveau des appareils. Vous utilisez Amazon Polly pour la première fois ? Si vous utilisez le service Amazon Polly pour la première fois, nous vous recommandons de lire les sections suivantes dans l'ordre indiqué : 1. Amazon Polly : fonctionnement (p. 3) – Cette section présente différentes données à saisir et différentes options d'Amazon Polly que vous pouvez utiliser tout au long du processus. 2. Mise en route avec Amazon Polly (p. 5)– Dans cette section, vous configurez votre compte et testez la synthèse vocale d'Amazon Polly. 3. Exemples d'applications (p. 36) – Cette section fournit des exemples supplémentaires que vous pouvez utiliser pour explorer Amazon Polly. 2 Amazon Polly Manuel du développeur Quelle est la prochaine étape ? Amazon Polly : fonctionnement Amazon Polly convertit le texte saisi en discours avec une voix humaine. Vous devez simplement appeler la méthode SynthesizeSpeech, saisir le texte à synthétiser, sélectionner l'une des voix de synthèse vocale (TTS) disponibles et spécifier un format de sortie audio. Amazon Polly synthétise ensuite le texte fourni dans un flux audio de transmission vocale de grande qualité. • Texte saisi – fournit le texte que vous voulez synthétiser, et Amazon Polly retourne un flux de données audio. Vous pouvez fournir les données d'entrée sous forme de texte brut ou au format de synthèse vocale SSML (Markup Language). Avec SSML, vous pouvez contrôler différents aspects du discours tels que la prononciation, le volume, le contenu audio et le débit de parole. Pour plus d'informations, consultez Utilisation de SSML (p. 14). • Voix disponibles – Amazon Polly vous propose toute un éventail de langues et de voix. Pour la plupart des langues, différentes voix vous sont proposées, notamment des voix d'hommes et de femmes. Vous devez spécifier uniquement le nom de la voix lorsque vous appelez l'opération SynthesizeSpeech, le service utilise alors cette voix pour convertir le texte en discours. Amazon Polly n'est pas un service de traduction — la synthèse vocale est dans la langue du texte. Les nombres utilisant des chiffres (par exemple, 53, et non cinquante-trois) sont synthétisées dans la langue de la voix. • Format de sortie – Amazon Polly peut fournir une synthèse vocale dans plusieurs formats. Vous pouvez sélectionner le format audio adapté à vos besoins. Par exemple, vous pouvez demander le discours au format MP3 ou Ogg Vorbis pour l'utiliser dans les applications web et mobiles. Vous pouvez également demander le format de sortie PCM pour les appareils AWS IoT et les solutions de téléphonie. Quelle est la prochaine étape ? Si vous utilisez Amazon Polly pour la première fois, nous vous conseillons de lire les rubriques suivantes dans l'ordre indiqué : • Mise en route avec Amazon Polly (p. 5) • Exemples d'applications (p. 36) • Limites d'Amazon Polly (p. 52) 3 Amazon Polly Manuel du développeur Quelle est la prochaine étape ? 4 Amazon Polly Manuel du développeur Étape 1 : Configurer un compte et un utilisateur Mise en route avec Amazon Polly Amazon Polly fournit des opérations API simples que vous pouvez intégrer facilement à vos applications existantes. Pour une liste des opérations prises en charge, consultez Actions (p. 60). Vous pouvez utiliser l'une des options suivantes : • AWS SDK – lorsque vous utilisez les kits de développement logiciel, vos demandes adressées à Amazon Polly sont automatiquement signées et authentifiées à l'aide des informations d'identification fournies. Ce choix est recommandé dans le cadre du développement de vos applications. • AWS CLI – vous pouvez utiliser l'interface AWS CLI pour accéder à n'importe quelle fonctionnalité Amazon Polly sans écrire de code. Les sections suivantes décrivent comment préparer et fournir un exercice d'introduction. Rubriques • Étape 1 : Configurer un compte AWS et créer un utilisateur (p. 5) • Étape 2 : Démarrer à l'aide de la console (p. 7) • Étape 3 : Démarrer à l'aide de l'AWS CLI (p. 8) • Quelle est la prochaine étape ? (p. 12) Étape 1 : Configurer un compte AWS et créer un utilisateur Avant d'utiliser Amazon Polly pour la première fois, effectuez les tâches suivantes : 1. Étape 1.1 : S'inscrire à AWS (p. 5) 2. Étape 1.2 : Création d'un utilisateur IAM (p. 6) Étape 1.1 : S'inscrire à AWS Lors de votre inscription à Amazon Web Services (AWS), votre compte AWS est automatiquement inscrit à tous les services AWS, y compris Amazon Polly. Seuls les services que vous utilisez vous sont facturés. 5 Amazon Polly Manuel du développeur Étape 1.2 : Création d'un utilisateur IAM Avec Amazon Polly, vous ne payez que les ressources que vous utilisez. Si vous êtes un nouveau client AWS, vous pouvez commencer à utiliser Amazon Polly gratuitement. Pour plus d'informations, consultez la page Niveau d'offre gratuite d'AWS. Si vous possédez déjà un compte AWS, vous pouvez ignorer la prochaine étape. Si ce vous ne disposez pas d'un compte AWS, effectuez les étapes de la procédure suivante pour en créer un. Pour créer un compte AWS 1. 2. Ouvrez https://aws.amazon.com/, puis choisissez Create an AWS Account. Suivez les instructions en ligne. Dans le cadre de la procédure d'inscription, vous recevrez un appel téléphonique et vous saisirez un code PIN en utilisant le clavier numérique du téléphone. Notez votre ID de compte AWS, car vous en aurez besoin lors de la prochaine étape. Étape 1.2 : Création d'un utilisateur IAM Pour accéder à un service d'AWS, comme Amazon Polly, vous devez fournir vos informations d'identification afin que le service puisse déterminer si vous êtes autorisé à accéder à ses ressources. La console exige votre mot de passe. Vous pouvez créer des clés d'accès pour votre compte AWS afin d'accéder à l'AWS CLI ou à l'API. Cependant, nous vous déconseillons d'accéder à AWS à l'aide des informations d'identification de votre compte AWS. Au lieu de cela, nous vous recommandons d'utiliser AWS Identity and Access Management (IAM). Créez un utilisateur IAM, ajoutez-le à un groupe IAM disposant d'autorisations d'administration, puis attribuez ces autorisations à cet utilisateur. Vous pouvez ensuite accéder à AWS à l'aide d'une URL spéciale et des informations d'identification de cet utilisateur IAM. Si vous êtes inscrit à AWS, mais que vous n'avez pas créé d'utilisateur IAM pour vous-même, vous pouvez le faire avec la console IAM. Les exercices de mise en route de ce guide présument que l'utilisateur (adminuser) dispose de privilèges d'administrateur. Suivez la procédure pour créer adminuser dans votre compte. Pour créer un administrateur et vous connecter à la console 1. 2. Créez un administrateur appelé adminuser dans votre compte AWS. Pour obtenir des instructions, consultez la section Création de votre premier groupe d'utilisateurs et d'administrateurs IAM dans le IAM Guide de l'utilisateur. Un utilisateur peut se connecter à la AWS Management Console à l'aide d'une URL spéciale. Pour plus d'informations, consultez Comment les utilisateurs se connectent à votre compte dans le IAM Guide de l'utilisateur. Important Les exercices de mise en route utilisent les informations d'identification adminuser. Pour plus de sécurité, lors du développement et des tests de vérification de l'application de production, nous vous recommandons de créer un administrateur spécifique aux services qui dispose d'autorisations uniquement pour les actions d'Amazon Polly. Pour obtenir un exemple de stratégie qui accorde des autorisations spécifiques Amazon Polly, consultez la page Exemple 1 : Autoriser toutes les actions Amazon Polly (p. 86). Pour plus d'informations sur IAM, consultez les ressources suivantes : • Identity and Access Management (IAM) • Mise en route 6 Amazon Polly Manuel du développeur Étape suivante • IAM Guide de l'utilisateur Étape suivante Étape 2 : Démarrer à l'aide de la console (p. 7) Étape 2 : Démarrer à l'aide de la console La console Amazon Polly est le moyen le plus simple pour commencer à tester et à utiliser la synthèse vocale d'Amazon Polly. La console Amazon Polly prend en charge la synthèse vocale à partir d'un texte brut ou d'une entrée SSML. Rubriques • Exercice 1 : Procédure de démarrage rapide Synthèse vocale (Console) (p. 7) • Exercice 2 : Synthèse vocale (entrée de texte brut) (p. 7) • Étape suivante (p. 8) Exercice 1 : Procédure de démarrage rapide Synthèse vocale (Console) Cette procédure est le moyen le plus rapide pour tester la qualité audio de la synthèse vocale d'Amazon Polly. Lorsque vous sélectionnez l'onglet Text-to-Speech, le champ de saisie de votre texte est préchargé avec l'exemple de texte afin que vous puissiez tester rapidement Amazon Polly. Pour tester rapidement Amazon Polly 1. 2. Connectez-vous à AWS Management Console et ouvrez la console Amazon Polly à partir de l'adresse https://console.aws.amazon.com/polly/. Choisissez l'onglet Text-to-Speech. 3. 4. Vous pouvez également choisir SSML. Sélectionnez une langue et une région, puis sélectionnez une voix. 5. Choisissez Listen to speech. Pour des tests plus approfondis, veuillez consulter les rubriques suivantes : • Exercice 2 : Synthèse vocale (entrée de texte brut) (p. 7) • Utilisation de SSML avec la console Amazon Polly (p. 14) • Application de lexiques à l'aide de la console (Synthèse vocale) (p. 23) Exercice 2 : Synthèse vocale (entrée de texte brut) La procédure suivante résume le discours à partir d'un texte brut. Notez la façon dont « W3C » et la date « 10/3 » (3 octobre) sont synthétisés. Pour synthétiser le discours à partir d'un texte brut 1. 2. Une fois que vous vous êtes connecté à la console Amazon Polly, choisissez Get started, puis l'onglet Text-to-Speech. Choisissez l'onglet Plain text. 7 Amazon Polly Manuel du développeur Étape suivante 3. Entrez ou collez ce texte dans la zone d'entrée. He was caught up in the game. In the middle of the 10/3/2014 W3C meeting he shouted, "Score!" quite loudly. 4. Dans Choose a language and region, choisissez English US, puis choisissez la voix que vous voulez utiliser pour ce texte. 5. 6. Pour écouter le discours immédiatement, choisissez Listen to speech. Pour enregistrer le discours dans un fichier, exécutez l'une des actions suivantes : a. Choisissez Save speech to MP3. b. Pour opter pour un format de fichier différent, choisissez Change file format, sélectionnez le format de fichier que vous souhaitez, puis choisissez Change. Pour obtenir des exemples plus détaillés, choisissez les rubriques suivantes : • Application de lexiques à l'aide de la console (Synthèse vocale) (p. 23) • Utilisation de SSML avec la console Amazon Polly (p. 14) Étape suivante Étape 3 : Démarrer à l'aide de l'AWS CLI (p. 8) Étape 3 : Démarrer à l'aide de l'AWS CLI A l'aide de l'AWS CLI, vous pouvez exécuter presque toutes les opérations Amazon Polly que vous pouvez exécuter à l'aide de la console Amazon Polly. Vous ne pouvez pas écouter la synthèse vocale à l'aide de l'AWS CLI. Au lieu de cela, vous devez l'enregistrer dans un fichier, puis ouvrir le fichier dans une application qui peut lire ce fichier. Rubriques • Étape 3.1 : Configuration de l'AWS Command Line Interface (AWS CLI) (p. 8) • Étape 3.2 : Effectuer un exercice de mise en route à l'aide d'AWS CLI (p. 10) Étape 3.1 : Configuration de l'AWS Command Line Interface (AWS CLI) Suivez les étapes pour télécharger et configurer l'AWS Command Line Interface (AWS CLI). Important Vous n'avez pas besoin de l'AWS CLI pour effectuer les étapes de cet exercice de mise en route. Cependant, quelques-uns des exercices de ce guide l'utilisent l'AWS CLI. Vous pouvez ignorer cette étape et passer à Étape 3.2 : Effectuer un exercice de mise en route à l'aide d'AWS CLI (p. 10), puis configurer l'AWS CLI plus tard lorsque vous en aurez besoin. Pour configurer l'AWS CLI. 1. Téléchargez et configurez l'AWS CLI. Pour obtenir des instructions, consultez les rubriques suivantes AWS Command Line Interface Guide de l'utilisateur: • Préparation de l'installation de l'AWS Command Line Interface 8 Amazon Polly Manuel du développeur Étape 3.1 : Configuration de l'AWS CLI • Configuration de l'AWS Command Line Interface 2. Ajoutez un profil désigné pour l'utilisateur administrateur dans le fichier de configuration de l'AWS CLI. Vous utiliserez ce profil lorsque vous exécuterez les commandesAWS CLI. Pour plus d'informations sur les profils nommés (désignés), consultez Profils nommés dans le AWS Command Line Interface Guide de l'utilisateur. [profile adminuser] aws_access_key_id = adminuser access key ID aws_secret_access_key = adminuser secret access key region = aws-region Pour obtenir la liste des régions AWS disponibles et celles qui sont prises en charge par Amazon Polly, consultez la section Régions et points de terminaison dans le Référence générale d'Amazon Web Services. Si vous spécifiez l'une des régions prises en charge par Amazon Polly lorsque vous configurez l'AWS CLI, vous pouvez ignorer la ligne suivante à partir des de exemples de code AWS CLI. Si vous spécifiez une région non prise en charge par Amazon Polly dans votre configuration AWS CLI (par exemple, si vous êtes un client AWS existant utilisant d'autres services dans des régions qui ne prennent en charge Amazon Polly), vous devez inclure la ligne suivante : --region polly-supported-aws-region 3. Vérifiez la configuration en saisissant la commande d'aide suivante à l'invite de commande : aws help Une liste de commandes AWS valides doit apparaître dans la fenêtre AWS CLI. Pour activer Amazon Polly dans l'AWS CLI (facultatif) Si vous avez déjà téléchargé et configuré l'AWS CLI, Amazon Polly peut ne pas être disponible si vous ne reconfigurez pas l'AWS CLI. Cette procédure vérifie si cette étape est nécessaire et fournit des instructions si Amazon Polly n'est pas disponible automatiquement. 1. Vérifiez la disponibilité d'Amazon Polly en saisissant la commande d'aide suivante à l'invite de commande : aws polly help Si une description d'Amazon Polly et une liste des commandes valides s'affichent, elles sont visibles dans la fenêtre AWS CLI. Si Amazon Polly est disponible dans l'AWS CLI, le service peut être utilisé immédiatement. Dans ce cas, vous pouvez ignorer le reste de cette procédure. Si ces informations ne sont pas affichées, passez à l'étape 2. 2. Utilisez l'une des deux options suivantes pour activer Amazon Polly : • Désinstallez, puis réinstallez l'AWS CLI. Pour obtenir des instructions, consultez la rubrique suivante dans le AWS Command Line Interface Guide de l'utilisateur : Installation de l'AWS Command Line Interface. ou • Ajoutez le service Amazon Polly séparément à l'AWS CLI 9 Amazon Polly Manuel du développeur Étape 3.2 : Exercice de mise en route a. Téléchargez le fichier service-2.json. b. A l'invite de commande, exécutez la commande suivante : aws configure add-model --service-model file://service-2.json -service-name polly <step> Revérifiez la disponibilité d'Amazon Polly : aws polly help La description d'Amazon Polly doit être visible. </step> Étape suivante Étape 3.2 : Effectuer un exercice de mise en route à l'aide d'AWS CLI (p. 10) Étape 3.2 : Effectuer un exercice de mise en route à l'aide d'AWS CLI Vous pouvez désormais tester la synthèse vocale fournie par Amazon Polly. Dans cet exercice, vous appelez l'opération SynthesizeSpeech en fournissant l'exemple de texte. Vous pouvez enregistrer le son qui en résulte dans un fichier et vérifier son contenu. Si vous avez spécifié l'une des régions prises en charge par Amazon Polly lorsque vous avez configuré l'AWS CLI, vous pouvez ignorer la ligne suivante à partir des de exemples de code AWS CLI. Si vous avez spécifié une région non prise en charge par Amazon Polly dans votre configuration AWS CLI (par exemple, si vous êtes un client AWS existant qui utilise d'autres services dans des régions qui ne prennent pas en charge Amazon Polly), vous devez inclure la ligne suivante : --region polly-supported-aws-region 1. Exécutez la commande AWS CLI synthesize-speech pour synthétiser l'exemple de texte dans un fichier audio (hello.mp3). L'exemple d'AWS CLI suivant est mis en forme pour OS X, Linux et Unix. Pour exécuter cet exemple à l'invite de commande Windows, remplacez le caractère de continuation Unix (\) à la fin de chaque ligne par le caractère de continuation Windows (^). aws polly synthesize-speech \ --output-format mp3 \ --voice-id Joanna \ --text "Hello, my name is Joanna. I learned about the W3C on 10/3 of last year." \ hello.mp3 Dans l'appel de synthesize-speech, vous fournissez le texte modèle pour la synthèse, la voix à utiliser (en fournissant un ID vocal, comme expliqué dans l'étape 3 suivante), ainsi que le format de sortie. La commande enregistre l'audio qui en résulte dans le fichier hello.mp3. 10 Amazon Polly Manuel du développeur Étape 3.2 : Exercice de mise en route En plus du fichier MP3, l'opération, ci-dessus, génère la sortie suivante dans la console. { "ContentType": "audio/mpeg", "RequestCharacters": "71" } 2. Lisez le fichier hello.mp3 pour vérifier la synthèse vocale. 3. Vous pouvez obtenir la liste des voix disponibles en utilisant l'opération DescribeVoices. Exécutez la commande AWS CLI describe-voices suivante. aws polly describe-voices En réponse, Amazon Polly renvoie la liste de toutes les voix disponibles. Pour chaque voix, la réponse fournit les métadonnées suivantes : ID vocal, code et nom de la langue, et genre de la voix. Voici un exemple de réponse : { "Voices": [ { "Gender": "Female", "Name": "Salli", "LanguageName": "US English", "Id": "Salli", "LanguageCode": "en-US" }, { "Gender": "Female", "Name": "Joanna", "LanguageName": "US English", "Id": "Kendra", "LanguageCode": "en-US" } ] } Le cas échéant, vous pouvez spécifier le code de langue pour trouver les voix disponibles pour une langue spécifique. Amazon Polly prend en charge 47 voix. L'exemple suivant répertorie toutes les voix pour le portugais brésilien. aws polly describe-voices \ --language-code pt-BR Pour obtenir la liste des codes de langue, consultez la page DescribeVoices (p. 63). Ces codes de langue sont des balises d'identification de langue W3C (code ISO 639 pour le nom de la langue-code du pays ISO 3166). Par exemple, en-US (anglais Etats-Unis), en-GB (anglais Royaume-Uni) et es-ES (Espagnol), etc. Vous pouvez également utiliser l'option help dans l'AWS CLI pour obtenir la liste des codes de langue : aws polly describe-voices help 11 Amazon Polly Manuel du développeur Quelle est la prochaine étape ? Quelle est la prochaine étape ? Ce guide fournit des exemples supplémentaires, dont certains sont des exemples de code Python qui utilisent AWS SDK for Python (Boto) pour effectuer des appels d'API vers Amazon Polly. Nous vous recommandons de configurer Python et de tester l'exemple de code fourni dans la section suivante. Pour accéder à des exemples supplémentaires, consultez Exemples d'applications (p. 36). Configuration de Python et test d'un exemple Pour tester le code d'exemple Python, vous devez utiliser AWS SDK for Python (Boto). Pour obtenir des instructions, consultez la page AWS SDK pour Python (Boto3). Pour tester le code d'exemple Python L'exemple de code Python suivant exécute les tâches suivantes : • Utilise le AWS SDK for Python (Boto) pour envoyer une demande SynthesizeSpeech à Amazon Polly (en fournissant un texte simple comme entrée). • Accède au flux audio résultant dans la réponse et enregistre l'audio dans un fichier sur votre disque local (speech.mp3). • Lit le fichier audio avec le lecteur audio par défaut de votre système local. Enregistre le code dans un fichier (example.py) et l'exécute. """Getting Started Example for Python 2.7+/3.3+""" from boto3 import Session from botocore.exceptions import BotoCoreError, ClientError from contextlib import closing import os import sys import subprocess from tempfile import gettempdir # Create a client using the credentials and region defined in the [adminuser] # section of the AWS credentials file (~/.aws/credentials). session = Session(profile_name="adminuser") polly = session.client("polly") try: # Request speech synthesis response = polly.synthesize_speech(Text="Hello world!", OutputFormat="mp3", VoiceId="Joanna") except (BotoCoreError, ClientError) as error: # The service returned an error, exit gracefully print(error) sys.exit(-1) # Access the audio stream from the response if "AudioStream" in response: # Note: Closing the stream is important as the service throttles on the # number of parallel connections. Here we are using contextlib.closing to # ensure the close method of the stream object will be called automatically # at the end of the with statement's scope. with closing(response["AudioStream"]) as stream: output = os.path.join(gettempdir(), "speech.mp3") 12 Amazon Polly Manuel du développeur Configuration de Python et test d'un exemple try: # Open a file for writing the output as a binary stream with open(output, "wb") as file: file.write(stream.read()) except IOError as error: # Could not write to file, exit gracefully print(error) sys.exit(-1) else: # The response didn't contain audio data, exit gracefully print("Could not stream audio") sys.exit(-1) # Play the audio using the platform's default player if sys.platform == "win32": os.startfile(output) else: # the following works on Mac and Linux. (Darwin = mac, xdg-open = linux). opener = "open" if sys.platform == "darwin" else "xdg-open" subprocess.call([opener, output]) Pour obtenir des exemples supplémentaires, notamment un exemple d'application, consultez la page Exemples d'applications (p. 36). 13 Amazon Polly Manuel du développeur Utilisation de SSML avec la console Utilisation de SSML Amazon Polly génère du discours à partir de documents SSML de texte brut (Markup Language) qui sont conformes à la version 1.1 de SSML. A l'aide de balises SSML, vous pouvez personnaliser et contrôler les aspects de discours tels que la prononciation, le volume et le débit de parole. Amazon Polly prend en charge SSML 1.1, tel que défini dans la recommandation W3C suivante : • Synthèse vocale SSML (Markup Language) Version 1.1, recommandation W3C 7 septembre 2010 Certains des éléments de la recommandation W3C SSML ne sont pas pris en charge. Pour plus d'informations, consultez Limites d'Amazon Polly (p. 52). Cette section fournit des exemples simples de SSML qui peuvent être utilisés pour générer et contrôler la sortie vocale. Les exemples fournissent également la commande AWS CLI synthesize-speech pour tester ces exemples. Utilisation de SSML avec la console Amazon Polly Amazon Polly prend en charge le langage SSML version 1.1, tel que défini par le W3C. Cette section explique comment utiliser l'entrée SSML pour la synthèse vocale dans la console Amazon Polly. Utilisation de SSML avec la console Amazon Polly La procédure suivante synthétise le discours à l'aide d'une entrée SSML. A l'exception des étapes 3 et 4 ci-dessous, les étapes de cet exemple sont identiques à celles de Exercice 2 : Synthèse vocale (entrée de texte brut) (p. 7). Pour synthétiser le discours à l'aide de la console Amazon Polly (entrée SSML) Dans cet exemple, nous vous présentons le balisage SSML pour remplacer « World Wide Web Consortium » par « W3C ». Comparez les résultats de cet exercice à ceux de Application de lexiques à l'aide de la console (Synthèse vocale) (p. 23) à la fois pour l'anglais (Etats-Unis) et pour une autre langue. 1. Connectez-vous à AWS Management Console et ouvrez la console Amazon Polly à partir de l'adresse https://console.aws.amazon.com/polly/. 14 Amazon Polly Manuel du développeur Étape suivante 2. Choisissez Get started, puis, si nécessaire, l'onglet Text-to-Speech. 3. Choisissez l'onglet SSML. 4. Tapez ou collez le texte suivant dans la zone de texte : <speak>He was caught up in the game.<break time="1s"/> In the middle of the 10/3/2014 <sub alias="World Wide Web Consortium">W3C</sub> meeting he shouted, "Score!" quite loudly.</speak> Les balises SSML informent Amazon Polly que le texte doit être rendu dans une manière spécifiée. • <break time="1s"/> indique à Amazon Polly de marquer une pause d'1 seconde entre les phrases. • <sub alias="World Wide Web Consortium">W3C</sub> indique à Amazon Polly de remplacer « World Wide Web Consortium » par « W3C ». 5. Pour plus d'informations sur SSML avec des exemples, consultez Utilisation de SSML avec l'AWS CLI (p. 15) Pour Choose a language and region, choisissez English US, puis choisissez la voix souhaitée. 6. 7. Pour écouter le discours immédiatement, choisissez Listen to speech. Pour enregistrer le discours dans un fichier, choisissez Save speech to MP3. Pour opter pour un format de fichier différent, choisissez Change file format, sélectionnez le format de fichier que vous souhaitez, puis choisissez Change. Exemples de console liés • Exercice 2 : Synthèse vocale (entrée de texte brut) (p. 7) • Application de lexiques à l'aide de la console (Synthèse vocale) (p. 23) Étape suivante Application de lexiques à l'aide de la console (Synthèse vocale) (p. 23) Utilisation de SSML avec l'AWS CLI Les rubriques suivantes expliquent comment utiliser une entrée SSML avec l'AWS CLI pour Amazon Polly. Exemple 1 : Transmission de SSML via la commande de synthèse vocale Dans la commande synthesize-speech suivante, vous spécifiez une chaîne SSML simple avec uniquement les balises <speak></speak> d'ouverture et de fermeture requises (vous pouvez également indiquer l'en-tête de document complet). Étant donné que le texte brut est la valeur par défaut, la commande spécifie également le paramètre --text-type pour indiquer que le texte d'entrée est SSML. Les seuls éléments nécessaires pour une chaîne SSML sont le texte d'entrée (ciblé par le discours généré), output-format et voice-id. 15 Amazon Polly Manuel du développeur Exemple 2 : Synthétiser un document SSML entier L'exemple d'AWS CLI suivant est mis en forme pour OS X, Linux et Unix. Pour exécuter cet exemple à l'invite de commande Windows, remplacez le caractère de continuation Unix (\) à la fin de chaque ligne par le caractère de continuation Windows (^). aws polly synthesize-speech \ --text-type ssml \ --text "<speak>Hello world</speak>" \ --output-format mp3 \ --voice-id Joanna \ speech.mp3 Lisez le fichier speech.mp3 obtenu pour vérifier la synthèse vocale. Exemple 2 : Synthétiser un document SSML entier Dans cet exemple, vous enregistrez du contenu SSML dans un fichier et spécifiez le nom du fichier dans la commande synthesize-speech. Cet exemple utilise le SSML suivant. <?xml version="1.0"?> <speak version="1.1" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/10/synthesis http:// www.w3.org/TR/speech-synthesis11/synthesis.xsd" xml:lang="en-US">Hello World</speak> Notez que l'attribut xml:lang indique en-US (US English) comme langue du texte saisi. Pour plus d'informations sur la façon dont la langue du texte et celle de la voix ont un impact sur l'opération SynthesizeSpeech, consultez la page Utilisation de l'attribut xml:lang de l'élément <speak> (p. 19). Pour tester le langage SSML 1. 2. Enregistrez le SSML dans un fichier (example.xml). Exécutez la commande synthesize-speech suivante depuis le chemin d'accès où le fichier XML est stocké et spécifiez le SSML comme entrée. L'exemple d'AWS CLI suivant est mis en forme pour OS X, Linux et Unix. Pour exécuter cet exemple à l'invite de commande Windows, remplacez le caractère de continuation Unix (\) à la fin de chaque ligne par le caractère de continuation Windows (^). aws polly synthesize-speech \ --text-type ssml \ --text file://example.xml \ --output-format mp3 \ --voice-id Joanna \ speech.mp3 3. Lisez le fichier speech.mp3 pour vérifier la synthèse vocale. Exemple 3 : Utilisation des balises SSML courantes Cette section explique comment utiliser certaines balises SSML courantes pour obtenir des résultats spécifiques. Pour plus d'exemples, consultez la page Synthèse vocale SSML (Markup Language) Version 1.1. 16 Amazon Polly Manuel du développeur Exemple 3 : Utilisation des balises SSML courantes Vous pouvez utiliser la commande synthesize-speech pour tester les exemples dans cette section. Utilisation de l'élément <break> La commande synthesize-speech suivante utilise l'élément <break> pour ajouter un délai de 300 millisecondes entre les mots « Hello » et « World » dans le discours qui en résulte. "<speak>Hello <break time='300ms'/> World</speak>" L'exemple d'AWS CLI suivant est mis en forme pour OS X, Linux et Unix. Pour exécuter cet exemple à l'invite de commande Windows, remplacez le caractère de continuation Unix (\) à la fin de chaque ligne par le caractère de continuation Windows (^). aws polly synthesize-speech \ --text-type ssml \ --text "<speak>Hello <break time='300ms'/> World</speak>" \ --output-format mp3 \ --voice-id Joanna \ speech.mp3 Lisez le fichier speech.mp3 obtenu pour vérifier la synthèse vocale. Utilisation de l'élément <prosody> Cet élément vous permet de contrôler le contenu audio, le débit de parole et le volume de discours. • Le SSML suivant utilise l'élément <prosody> pour contrôler le volume : "<speak><prosody volume='+20dB'>Hello world</prosody></speak>" L'exemple d'AWS CLI suivant est mis en forme pour OS X, Linux et Unix. Pour exécuter cet exemple à l'invite de commande Windows, remplacez le caractère de continuation Unix (\) à la fin de chaque ligne par le caractère de continuation Windows (^). aws polly synthesize-speech \ --text-type ssml \ --text "<speak><prosody volume='+20dB'>Hello world</prosody></speak>" \ --output-format mp3 \ --voice-id Joanna \ speech.mp3 • Le SSML suivant utilise l'élément <prosody> pour contrôler le contenu audio : "<speak><prosody pitch='x-high'>Hello world</prosody></speak>" L'exemple d'AWS CLI suivant est mis en forme pour OS X, Linux et Unix. Pour exécuter cet exemple à l'invite de commande Windows, remplacez le caractère de continuation Unix (\) à la fin de chaque ligne par le caractère de continuation Windows (^). aws polly synthesize-speech \ --text-type ssml \ --text "<speak><prosody pitch='x-high'>Hello world</prosody></speak>" \ --output-format mp3 \ 17 Amazon Polly Manuel du développeur Exemple 3 : Utilisation des balises SSML courantes --voice-id Joanna \ speech.mp3 • Le SSML suivant utilise l'élément <prosody> pour spécifier le débit de parole : "<speak><prosody rate='x-fast'>Hello world</prosody></speak>" L'exemple d'AWS CLI suivant est mis en forme pour OS X, Linux et Unix. Pour exécuter cet exemple à l'invite de commande Windows, remplacez le caractère de continuation Unix (\) à la fin de chaque ligne par le caractère de continuation Windows (^). aws polly synthesize-speech \ --text-type ssml \ --text "<speak><prosody rate='x-fast'>Hello world</prosody></speak>" \ --output-format mp3 \ --voice-id Joanna \ speech.mp3 • Vous pouvez spécifier plusieurs attributs dans un élément <prosody>, comme illustré dans l'exemple suivant : "<speak><prosody volume='x-loud' pitch='x-high' rate='x-fast'>Hello world</ prosody></speak>" L'exemple d'AWS CLI suivant est mis en forme pour OS X, Linux et Unix. Pour exécuter cet exemple à l'invite de commande Windows, remplacez le caractère de continuation Unix (\) à la fin de chaque ligne par le caractère de continuation Windows (^). aws polly synthesize-speech \ --text-type ssml \ --text "<speak><prosody volume='x-loud' pitch='x-high' rate='x-fast'>Hello world</prosody></speak>" \ --output-format mp3 \ --voice-id Joanna \ speech.mp3 Lisez le fichier speech.mp3 obtenu pour vérifier la synthèse vocale. Utilisation de l'élément <emphasis> Cet élément vous permet de spécifier l'accentuation ou l'importance à appliquer lors de la prononciation d'un mot ou d'une phrase spécifiques. "<speak><emphasis level='strong'>Hello</emphasis> world how are you?</speak>" L'exemple d'AWS CLI suivant est mis en forme pour OS X, Linux et Unix. Pour exécuter cet exemple à l'invite de commande Windows, remplacez le caractère de continuation Unix (\) à la fin de chaque ligne par le caractère de continuation Windows (^). aws polly synthesize-speech \ --text-type ssml \ --text "<speak><emphasis level='strong'>Hello</emphasis> world how are you?</ speak>" \ --output-format mp3 \ 18 Amazon Polly Manuel du développeur Exemple 4 : Contrôle de la prononciation --voice-id Joanna \ speech.mp3 Lisez le fichier speech.mp3 obtenu pour vérifier la synthèse vocale. Exemple 4 : Contrôle de la prononciation Cet exemple montre quelques-unes des balises SSML courantes que vous pouvez utiliser pour contrôler la prononciation. Utilisation de l'élément <say-as> Cet élément vous permet de fournir des informations sur le type de texte contenu dans l'élément. Dans le SSML suivant SSML, <say-as> indique que le texte 4/6 doit être traité comme une valeur de date avec le format jour/mois. "<speak>Today is <say-as interpret-as='date' format='dm' >4/6</say-as></ speak>" L'exemple d'AWS CLI suivant est mis en forme pour OS X, Linux et Unix. Pour exécuter cet exemple à l'invite de commande Windows, remplacez le caractère de continuation Unix (\) à la fin de chaque ligne par le caractère de continuation Windows (^). aws polly synthesize-speech \ --text-type ssml \ --text "<speak>Today is <say-as interpret-as='date' format='dm' >4/6</sayas></speak>" \ --output-format mp3 \ --voice-id Joanna \ speech.mp3 Le discours qui en résulte dit « Today is June 4th ». La balise <say-as> décrit comment le texte doit être interprété en fournissant un contexte supplémentaire grâce à l'attribut interpret-as. Lisez le fichier speech.mp3 obtenu pour vérifier la synthèse vocale. Utilisation de l'attribut xml:lang de l'élément <speak> Vous pouvez améliorer la prononciation des mots qui sont étrangers à la langue du texte saisi en spécifiant la langue cible à l'aide de l'attribut xml:lang de l'élément <speak>. Cela incite le moteur TTS à appliquer différentes règles de prononciation pour les mots qui sont spécifiques à la langue cible. Les exemples suivants présentent différentes combinaisons de langues pour le texte saisi et les voix que vous pouvez indiquer dans l'appel synthesize-speech. Vous pouvez tester ces exemples à l'aide de la commande synthesize-speech pour vérifier les résultats. Dans cet exemple, la voix choisie est une voix US English (anglais Etats-Unis). Amazon Polly suppose que la langue du texte saisi est la même que celle de la voix sélectionnée. Pour une prononciation espagnole de mots spécifiques, vous devez indiquer les mots ciblés comme étant Spanish (espagnol). aws polly synthesize-speech \ --text-type ssml \ --text "<speak>That restaurant is terrific. <xml:lang=\"es-ES\">Mucho gusto</ xml:lang>!</speak>" \ --output-format mp3 \ --voice-id Joanna \ 19 Amazon Polly Manuel du développeur Exemple 4 : Contrôle de la prononciation speech.mp3 Étant donné que la langue du texte saisi est spécifiée, Amazon Polly établit une correspondance entre les phonèmes espagnols obtenus et les phonèmes anglais de la plus petite distance acoustique. Par conséquent, Salli lit le texte comme un interlocuteur de langue maternelle américaine qui sait prononcer correctement l'espagnol, mais avec un accent américain. Note Cet usage est limité aux paires de langues disponibles dans la gamme de langues proposée par Amazon Polly. Certaines paires de langues fonctionnent mieux que d'autres en raison de la structure phonologique des langues. Lisez le fichier speech.mp3 obtenu pour écouter la synthèse vocale. 20 Amazon Polly Manuel du développeur Application de plusieurs lexiques Gestion des lexiques Les lexiques de prononciation vous permettent de personnaliser la prononciation des mots. Amazon Polly fournit des opérations d'API que vous pouvez utiliser pour stocker les lexiques dans une région AWS. Ces lexiques sont spécifiques à cette région particulière. Vous pouvez utiliser un ou plusieurs des lexiques de cette région lors de la synthèse du texte grâce à l'opération SynthesizeSpeech. Le lexique spécifié est alors appliqué au texte saisi avant le début de la synthèse. Pour plus d'informations, consultez SynthesizeSpeech (p. 71). Note Ces lexiques doivent être conformes à la recommandation W3C Pronunciation Lexicon Specification (PLS). Pour plus d'informations, consultez la recommandation Pronunciation Lexicon Specification (PLS) Version 1.0 sur le site Web de W3C. Voici des exemples d'utilisation des lexiques avec des moteurs de synthèse vocale : • Des mots courants sont parfois stylisés en utilisant des chiffres à la place des lettres, comme dans l'exemple « g3t sm4rt » (get smart). Les humains sont capables de lire ces mots correctement. Cependant, un moteur de synthèse vocale (TTS) lit le texte de façon littérale, c'est-à-dire en prononçant toutes les lettres du nom. C'est dans ce contexte que les lexiques peuvent vous être utiles afin de personnaliser la synthèse vocale lors de l'utilisation d'Amazon Polly. Dans cet exemple, vous pouvez spécifier un alias (get smart) pour le mot « g3t sm4rt » dans le lexique. • Votre texte peut inclure un acronyme, tel que W3C. Vous pouvez utiliser un lexique afin de définir un alias pour le mot W3C qui sera lu sous sa forme complète, développée (World Wide Web Consortium). Les lexiques vous permettent de contrôler davantage la façon dont Amazon Polly prononce des mots rares dans la langue sélectionnée. Par exemple, vous pouvez spécifier la prononciation à l'aide d'un alphabet phonétique. Pour plus d'informations, consultez la recommandation Pronunciation Lexicon Specification (PLS) Version 1.0 sur le site Web de W3C. Rubriques • Application de plusieurs lexiques (p. 21) • Gestion des lexiques à l'aide de la console Amazon Polly (p. 22) • Gestion des lexiques à l'aide d'AWS CLI (p. 25) Application de plusieurs lexiques Vous pouvez appliquer jusqu'à cinq lexiques à votre texte. Si le même graphème apparaît dans plusieurs lexiques que vous appliquez à votre texte, l'ordre selon lequel ils sont appliqués peut 21 Amazon Polly Manuel du développeur Gestion des lexiques à l'aide de la console produire un discours différent. Par exemple, étant donné le texte suivant, « Hello, my name is Bob. » et deux lexèmes dans différents lexiques qui utilisent tous deux le graphème Bob. LexA <lexeme> <grapheme>Bob</grapheme> <alias>Robert</alias> </lexeme> LexB <lexeme> <grapheme>Bob</grapheme> <alias>Bobby</alias> </lexeme> Si les lexiques sont répertoriés selon l'ordre LexA, puis LexB, la synthèse vocale sera « Hello, my name is Robert. » S'ils sont répertoriés selon l'ordre LexB, puis LexA, la synthèse vocale sera « Hello, my name is Bobby. » Example – Appliquer LexA avant LexB aws polly synthesize-speech \ --lexicon-names LexA LexB \ --output-format mp3 \ --text "Hello, my name is Bob" \ --voice-id Justin \ bobAB.mp3 Sortie vocale : « Hello, my name is Robert. » Example – Appliquer LexB avant LexA aws polly synthesize-speech \ --lexicon-names LexB LexA \ --output-format mp3 \ --text "Hello, my name is Bob" \ --voice-id Justin \ bobBA.mp3 Sortie vocale : « Hello, my name is Bobby. » Pour plus d'informations sur l'application des lexiques via la console Amazon Polly, consultez Application de lexiques à l'aide de la console (Synthèse vocale) (p. 23). Gestion des lexiques à l'aide de la console Amazon Polly Vous pouvez utiliser la console Amazon Polly pour charger, télécharger, appliquer, filtrer et supprimer des lexiques. Les procédures suivantes illustrent chacun de ces processus. 22 Amazon Polly Manuel du développeur Chargement des lexiques à l'aide de la console Chargement des lexiques à l'aide de la console Pour utiliser un lexique de prononciation, vous devez commencer par le charger. Il y a deux emplacements sur la console à partir desquels vous pouvez charger un lexique, l'onglet Text-toSpeech et l'onglet Lexicons. Les procédures suivantes expliquent comment ajouter des lexiques que vous pouvez utiliser pour personnaliser la prononciation de mots et de phrases rares dans la langue choisie. Pour ajouter un lexique à partir de l'onglet Lexicons 1. Connectez-vous à AWS Management Console et ouvrez la console Amazon Polly à partir de l'adresse https://console.aws.amazon.com/polly/. 2. Choisissez l'onglet Lexicons. 3. Choisissez Upload. 4. Recherchez le lexique que vous souhaitez charger. Vous pouvez utiliser uniquement les fichiers PLS qui utilisent les extensions .pls et xml. 5. Choisissez Open. Si un lexique du même nom (fichier .pls ou xml) existe déjà, le chargement du lexique permettra de remplacer le lexique existant. Pour ajouter un lexique à partir de l'onglet Text-to-Speech 1. Connectez-vous à AWS Management Console et ouvrez la console Amazon Polly à partir de l'adresse https://console.aws.amazon.com/polly/. 2. Choisissez l'onglet Text-to-Speech. 3. Choisissez Customize pronunciation of words or phrases using lexicons, puis Upload lexicon. 4. Recherchez le lexique que vous souhaitez charger. Vous pouvez utiliser uniquement les fichiers PLS qui utilisent les extensions .pls et xml. 5. Choisissez Open. Si un lexique du même nom (fichier .pls ou xml) existe déjà, le chargement du lexique permettra de remplacer le lexique existant. Application de lexiques à l'aide de la console (Synthèse vocale) La procédure suivante montre comment appliquer un lexique au texte que vous avez saisi en appliquant le lexique W3c.pls pour remplacer par « World Wide Web Consortium » par « W3C ». Si vous appliquez plusieurs lexiques à votre texte, ils seront appliqués dans un ordre descendant ; la première correspondance étant prioritaire par rapport aux suivantes. Un lexique est appliqué au texte uniquement si la langue spécifiée dans le lexique est la même que la langue choisie. Vous pouvez appliquer un lexique à un texte brut ou à une entrée SSML. 23 Amazon Polly Manuel du développeur Filtrage de la liste des lexiques à l'aide de la console Example – Appliquer le lexique W3C.pls Pour créer le lexique dont vous aurez besoin pour cet exercice, consultez Utilisation de l'opération PutLexicon (p. 26). Utilisez un éditeur de texte brut pour créer le lexique W3C.pls affiché en haut de la rubrique. Gardez cela à l'esprit lorsque vous enregistrez ce fichier. Pour appliquer le lexique W3C.pls à votre entrée Dans cet exemple, nous vous présentons des lexiques pour remplacer « World Wide Web Consortium » par « W3C ». Comparez les résultats de cet exercice à ceux de Utilisation de SSML avec la console Amazon Polly (p. 14) à la fois pour l'anglais (Etats-Unis) et pour une autre langue. 1. Connectez-vous à AWS Management Console et ouvrez la console Amazon Polly à partir de l'adresse https://console.aws.amazon.com/polly/. 2. Effectuez l'une des actions suivantes : • Choisissez l'onglet Plain text, puis tapez ou collez ce texte dans la zone d'entrée de texte. He was caught up in the game. In the middle of the 10/3/2014 W3C meeting he shouted, "Score!" quite loudly. • Choisissez l'onglet SSML, puis tapez ou collez ce texte dans la zone d'entrée de texte. <speak>He wasn't paying attention.<break time="1s"/> In the middle of the 10/3/2014 W3C meeting he shouted, "Score!" quite loudly.</speak> 3. Dans la liste Choose a language and region, sélectionnez English US, puis choisissez une voix que vous voulez utiliser pour ce texte. 4. Choisissez Customize pronunciation of words or phrases using lexicons. 5. Dans la liste des lexiques, choisissez W3C (English, US). Si le lexique W3C (English, US) n'apparaît pas, choisissez Upload lexicon, chargez-le, puis sélectionnez-le dans la liste. 6. Pour écouter le discours immédiatement, choisissez Listen to speech. 7. Pour enregistrer le discours dans un fichier, a. Choisissez Save speech to MP3. b. Pour opter pour un format de fichier différent, choisissez Change file format, sélectionnez le format de fichier que vous souhaitez, puis choisissez Change. Répétez les étapes précédentes, mais choisissez une autre langue et notez la différence dans le résultat obtenu. Filtrage de la liste des lexiques à l'aide de la console La procédure suivante décrit comment filtrer la liste de lexiques afin d'afficher uniquement les lexiques de la langue choisie. Pour filtrer les lexiques par langue 1. Connectez-vous à AWS Management Console et ouvrez la console Amazon Polly à partir de l'adresse https://console.aws.amazon.com/polly/. 2. Choisissez l'onglet Lexicons. 24 Amazon Polly Manuel du développeur Téléchargement des lexiques à l'aide de la console 3. Choisissez Filter. 4. Dans la liste des langues, sélectionnez la langue sur laquelle vous voulez filtrer. La liste affiche uniquement les lexiques pour la langue choisie. Téléchargement des lexiques à l'aide de la console Le processus suivant décrit comment télécharger un ou plusieurs lexiques. Vous pouvez ajouter, supprimer ou modifier des entrées de lexique dans le fichier, puis le chargez à nouveau pour avoir un lexique toujours à jour. Pour télécharger un ou plusieurs lexiques 1. Connectez-vous à AWS Management Console et ouvrez la console Amazon Polly à partir de l'adresse https://console.aws.amazon.com/polly/. 2. Choisissez l'onglet Lexicons. 3. Choisissez le ou les lexiques à télécharger. a. Pour télécharger un seul lexique, choisissez son nom dans la liste. b. Pour télécharger plusieurs lexiques en un seul fichier d'archive compressé, cochez la case située en regard de chaque entrée de la liste que vous souhaitez télécharger. 4. Choisissez Téléchargement. 5. Ouvrez le dossier dans lequel vous souhaitez télécharger le lexique. 6. Choisissez Save. Suppression d'un lexique à l'aide de la console Pour supprimer un lexique Le processus suivant décrit comment supprimer un lexique. Après avoir supprimé le lexique, vous devez l'ajouter à nouveau avant de pouvoir le réutiliser. Vous pouvez supprimer un ou plusieurs lexiques en même temps en sélectionnant les cases à cocher en regard des différents lexiques concernés. 1. Connectez-vous à AWS Management Console et ouvrez la console Amazon Polly à partir de l'adresse https://console.aws.amazon.com/polly/. 2. Choisissez l'onglet Lexicons. 3. Sélectionnez un ou plusieurs lexiques à supprimer dans la liste. 4. Sélectionnez Delete. 5. Choisissez Delete pour supprimer le lexique de la région ou Cancel pour le conserver. Gestion des lexiques à l'aide d'AWS CLI Les rubriques suivantes couvrent les commandes AWS CLI indispensables pour gérer vos lexiques de prononciation. Rubriques • Utilisation de l'opération PutLexicon (p. 26) • Utilisation de l'opération GetLexicon (p. 31) 25 Amazon Polly Manuel du développeur PutLexicon • Utilisation des opérations ListLexicons (p. 33) • Utilisation de l'opération DeleteLexicon (p. 34) Utilisation de l'opération PutLexicon Avec Amazon Polly, vous pouvez utiliser PutLexicon (p. 69) pour stocker des lexiques de prononciation dans une région AWS spécifique pour votre compte. Vous pouvez ensuite indiquer un ou plusieurs de ces lexiques stockés dans votre demande SynthesizeSpeech (p. 71) que vous souhaitez appliquer avant que le service ne démarre la synthèse du texte. Pour plus d'informations, consultez Gestion des lexiques (p. 21). Cette section fournit des exemples de lexiques, ainsi que des instructions pas à pas pour les stocker et les tester. Note Ces lexiques doivent être conformes à la recommandation W3C Pronunciation Lexicon Specification (PLS). Pour plus d'informations, consultez la recommandation Pronunciation Lexicon Specification (PLS) Version 1.0 sur le site Web de W3C. Exemple 1 : Lexique avec un lexème Considérez le lexique W3C compatible PLS. <?xml version="1.0" encoding="UTF-8"?> <lexicon version="1.0" xmlns="http://www.w3.org/2005/01/pronunciation-lexicon" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd" alphabet="ipa" xml:lang="en-US"> <lexeme> <grapheme>W3C</grapheme> <alias>World Wide Web Consortium</alias> </lexeme> </lexicon> Remarques : • Les deux attributs spécifiés dans l'élément <lexicon> : • L'attribut xml:lang spécifie le code de langue, en-US, auquel le lexique s'applique. Amazon Polly peut utiliser ce lexique si la voix que vous spécifiez dans l'appel SynthesizeSpeech a le même code de langue (en-US). Note Vous pouvez utiliser l'opération DescribeVoices pour trouver le code de langue associé à une voix. • L'attribut alphabet indique IPA, ce qui signifie que l'alphabet phonétique international (API) est utilisé pour les prononciations. API est l'un des alphabets utilisés pour la transcription phonétique des sons. Amazon Polly prend également en charge l'alphabet X-SAMPA (Extended Speech Assessment Methods Phonetic Alphabet). 26 Amazon Polly Manuel du développeur PutLexicon • L'élément <lexeme> décrit le mappage entre <grapheme> (qui est une représentation de texte du mot) et <alias>. Pour tester ce lexique, procédez comme suit : 1. Enregistrez le lexique sous le nom example.pls. 2. Exécutez la commande d'AWS CLI put-lexicon pour stocker le lexique (avec le nom w3c), dans la région us-east-1. aws polly put-lexicon \ --name w3c \ --content file://example.pls 3. Exécutez la commande synthesize-speech pour synthétiser l'exemple de texte dans un flux audio (speech.mp3) et indiquez le paramètre facultatif lexicon-name. aws polly synthesize-speech \ --text "W3C is a Consortium" \ --voice-id Joanna \ --output-format mp3 \ --lexicon-names="w3c" \ speech.mp3 4. Lisez le fichier speech.mp3 obtenu et notez que le mot W3C dans le texte est remplacé par « World Wide Web Consortium ». L'exemple de lexique précédent utilise un alias. L'alphabet API mentionné dans le lexique n'est pas utilisé. Le lexique suivant spécifie une prononciation phonétique à l'aide de l'élément <phoneme> avec l'alphabet API. <?xml version="1.0" encoding="UTF-8"?> <lexicon version="1.0" xmlns="http://www.w3.org/2005/01/pronunciation-lexicon" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd" alphabet="ipa" xml:lang="en-US"> <lexeme> <grapheme>pecan</grapheme> <phoneme>p##k##n</phoneme> </lexeme> </lexicon> Suivez la même procédure pour tester ce lexique. Assurez-vous d'indiquer le texte saisi comportant le mot « pecan » (par exemple, « Pecan pie is delicious »). Exemple 2 : Lexique avec plusieurs lexèmes Dans cet exemple, le lexème que vous spécifiez dans le lexique s'applique exclusivement au texte saisi pour la synthèse. Prenez en compte le lexique suivant : <?xml version="1.0" encoding="UTF-8"?> <lexicon version="1.0" xmlns="http://www.w3.org/2005/01/pronunciation-lexicon" 27 Amazon Polly Manuel du développeur PutLexicon xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd" alphabet="ipa" xml:lang="en-US"> <lexeme> <grapheme>W3C</grapheme> <alias>World Wide Web Consortium</alias> </lexeme> <lexeme> <grapheme>W3C</grapheme> <alias>WWW Consortium</alias> </lexeme> <lexeme> <grapheme>Consortium</grapheme> <alias>Community</alias> </lexeme> </lexicon> Le lexique indique trois lexèmes, dont deux d'entre eux définissent un alias pour le graphème W3C comme suit : • Le premier élément <lexeme> définit un alias (World Wide Web Consortium). • Le deuxième <lexeme> définit un autre alias (WWW Consortium). Amazon Polly utilise le premier remplacement pour tout graphème donné dans un lexique. Le troisième <lexeme> définit un remplacement (Community) pour le mot Consortium. Tout d'abord, nous allons tester ce lexique. Supposons que vous vouliez résumer l'exemple de texte suivant dans un fichier audio (speech.mp3), et que vous indiquiez le lexique dans un appel à SynthesizeSpeech. The W3C is a Consortium SynthesizeSpeech applique d'abord le lexique comme suit : • Pour le premier lexème, le mot W3C est révisé en tant que « WWW Consortium ». Le texte révisé apparaît comme suit : The WWW Consortium is a Consortium • L'alias défini dans le troisième lexème s'applique uniquement au mot Consortium qui faisait partie du texte original, générant le texte suivant : The World Wide Web Consortium is a Community. Vous pouvez le tester en utilisant l'AWS CLI comme suit : 1. 2. Enregistrez le lexique sous le nom example.pls. Exécutez la commande put-lexicon pour stocker le lexique avec le nom « w3c », dans la région us-east-1. aws polly put-lexicon \ --name w3c \ 28 Amazon Polly Manuel du développeur PutLexicon --content file://example.pls 3. Exécutez la commande list-lexicons pour vérifier que le lexique « w3c » figure dans la liste des lexiques renvoyés. aws polly list-lexicons 4. Exécutez la commande synthesize-speech pour synthétiser l'exemple de texte dans un fichier audio (speech.mp3) et indiquez le paramètre facultatif lexicon-name. aws polly synthesize-speech \ --text "W3C is a Consortium" \ --voice-id Joanna \ --output-format mp3 \ --lexicon-names="w3c" \ speech.mp3 5. Lisez le fichier speech.mp3 obtenu pour vérifier que le discours synthétisé reflète les modifications de texte. Exemple 3 : Spécification de plusieurs lexiques Dans un appel à SynthesizeSpeech, vous pouvez spécifier plusieurs lexiques. Dans ce cas, le premier lexique spécifié (de gauche à droite) remplace tous les lexiques précédents. Considérez les deux lexiques suivants. Veuillez noter que chaque lexique décrit différents alias pour le même graphème W3C. • Lexique 1 : w3c.pls <?xml version="1.0" encoding="UTF-8"?> <lexicon version="1.0" xmlns="http://www.w3.org/2005/01/pronunciation-lexicon" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd" alphabet="ipa" xml:lang="en-US"> <lexeme> <grapheme>W3C</grapheme> <alias>World Wide Web Consortium</alias> </lexeme> </lexicon> • Lexique 2 : w3cAlternate.pls <?xml version="1.0" encoding="UTF-8"?> <lexicon version="1.0" xmlns="http://www.w3.org/2005/01/pronunciation-lexicon" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd" alphabet="ipa" xml:lang="en-US"> <lexeme> <grapheme>W3C</grapheme> <alias>WWW Consortium</alias> 29 Amazon Polly Manuel du développeur PutLexicon </lexeme> </lexicon> Supposons que vous stockiez ces lexiques respectivement sous les noms w3c et w3cAlternate. Si vous spécifiez des lexiques selon l'ordre (w3c suivi de w3cAlternate) dans un appel à la commande SynthesizeSpeech, l'alias pour W3C défini dans le premier lexique a la priorité par rapport au deuxième. Pour tester ces lexiques, procédez comme suit : 1. Enregistrez les lexiques localement dans des fichiers appelés w3c.pls et w3cAlternate.pls. 2. Chargez ces lexiques à l'aide de la commande d'AWS CLI put-lexicon. • Chargez le lexique w3c.pls et stockez-le en tant que w3c. aws polly put-lexicon \ --name w3c \ --content file://w3c.pls • Chargez le lexique w3cAlternate.pls dans le service en tant que w3cAlternate. aws polly put-lexicon \ --name w3cAlternate \ --content file://w3cAlternate.pls 3. Exécutez la commande synthesize-speech pour synthétiser l'exemple de texte dans un flux audio (speech.mp3) et indiquez les deux lexiques à l'aide du paramètre lexicon-name. aws polly synthesize-speech \ --text "PLS is a W3C recommendation" \ --voice-id Joanna \ --output-format mp3 \ --lexicon-names '["w3c","w3cAlternative"]' \ speech.mp3 4. Testez le fichier speech.mp3 obtenu. Il doit se lire comme suit : PLS is a World Wide Web Consortium recommendation Exemple 4 : Code Python pour PutLexicon L'exemple de code Python suivant utilise AWS SDK for Python (Boto) pour stocker un lexique. Remarques : • Vous devez mettre à jour le code en fournissant un nom de fichier de lexique local et un nom de lexique stocké. • L'exemple suppose que vous avez créé des fichiers de lexique dans un sous-répertoire appelé pls. Vous devez mettre à jour le chemin d'accès, comme il convient. L'exemple de code suivant utilise des informations d'identification par défaut stockées dans le fichier de configuration AWS SDK. Pour plus d'informations sur la création du fichier de configuration, consultez Étape 3.1 : Configuration de l'AWS Command Line Interface (AWS CLI) (p. 8). 30 Amazon Polly Manuel du développeur GetLexicon from argparse import ArgumentParser from boto3 import Session from botocore.exceptions import BotoCoreError, ClientError # Define and parse the command line arguments cli = ArgumentParser(description="PutLexicon example") cli.add_argument("path", type=str, metavar="FILE_PATH") cli.add_argument("-n", "--name", type=str, required=True, metavar="LEXICON_NAME", dest="name") arguments = cli.parse_args() # Create a client using the credentials and region defined in the adminuser # section of the AWS credentials and configuration files session = Session(profile_name="adminuser") polly = session.client("polly") # Open the PLS lexicon file for reading try: with open(arguments.path, "r") as lexicon_file: # Read the pls file contents lexicon_data = lexicon_file.read() # Store the PLS lexicon on the service. # If a lexicon with that name already exists, # its contents will be updated response = polly.put_lexicon(Name=arguments.name, Content=lexicon_data) except (IOError, BotoCoreError, ClientError) as error: # Could not open/read the file or the service returned an error, # exit gracefully cli.error(error) print(u"The \"{0}\" lexicon is now available for use.".format(arguments.name)) Utilisation de l'opération GetLexicon Amazon Polly fournit l'opération API GetLexicon (p. 65) pour récupérer le contenu d'un lexique de prononciation que vous avez enregistré dans votre compte dans une région spécifique. La commande AWS CLI get-lexicon suivante récupère le contenu du lexique example. aws polly get-lexicon \ --name example Si vous n'avez pas encore de lexique enregistré dans votre compte, vous pouvez utiliser l'opération PutLexicon pour en enregistrer un. Pour plus d'informations, consultez Utilisation de l'opération PutLexicon (p. 26). Voici un exemple de réponse. Outre le contenu du lexique, la réponse renvoie les métadonnées, telles que le code de langue auquel le lexique s'applique, le nombre de lexèmes définis dans le lexique, l'Amazon Resource Name (ARN) de la ressource et la taille du lexique en octets. La valeur LastModified est un horodatage Unix. 31 Amazon Polly Manuel du développeur GetLexicon { "Lexicon": { "Content": "lexicon content in plain text PLS format", "Name": "example" }, "LexiconAttributes": { "LanguageCode": "en-US", "LastModified": 1474222543.989, "Alphabet": "ipa", "LexemesCount": 1, "LexiconArn": "arn:aws:polly:us-east-1:account-id:lexicon/example", "Size": 495 } } Le code Python suivant utilise le AWS SDK for Python (Boto) pour récupérer tous les lexiques stockés dans une région AWS. L'exemple prend en charge un nom de lexique comme un paramètre de ligne de commande et récupère uniquement ce lexique, imprimant le chemin d'accès tmp où il y a été enregistré localement. L'exemple de code suivant utilise des informations d'identification par défaut stockées dans le fichier de configuration AWS SDK. Pour plus d'informations sur la création du fichier de configuration, consultez Étape 3.1 : Configuration de l'AWS Command Line Interface (AWS CLI) (p. 8). from argparse import ArgumentParser from os import path from tempfile import gettempdir from boto3 import Session from botocore.exceptions import BotoCoreError, ClientError # Define and parse the command line arguments cli = ArgumentParser(description="GetLexicon example") cli.add_argument("name", type=str, metavar="LEXICON_NAME") arguments = cli.parse_args() # Create a client using the credentials and region defined in the adminuser # section of the AWS credentials and configuration files session = Session(profile_name="adminuser") polly = session.client("polly") print(u"Fetching {0}...".format(arguments.name)) try: # Fetch lexicon by name response = polly.get_lexicon(Name=arguments.name) except (BotoCoreError, ClientError) as error: # The service returned an error, exit gracefully cli.error(error) # Get the lexicon data from the response lexicon = response.get("Lexicon", {}) # Access the lexicon's content if "Content" in lexicon: output = path.join(gettempdir(), u"%s.pls" % arguments.name) print(u"Saving to %s..." % output) 32 Amazon Polly Manuel du développeur ListLexicons try: # Save the lexicon contents to a local file with open(output, "w") as pls_file: pls_file.write(lexicon["Content"]) except IOError as error: # Could not write to file, exit gracefully cli.error(error) else: # The response didn't contain lexicon data, exit gracefully cli.error("Could not fetch lexicons contents") print("Done.") Utilisation des opérations ListLexicons Amazon Polly fournit l'opération API ListLexicons (p. 67) que vous pouvez utiliser pour obtenir la liste des lexiques de prononciation dans votre compte dans une région spécifique d'AWS. L'appel de l'AWS CLI suivant répertorie les lexiques dans votre compte dans la région us-east-1. aws polly list-lexicons Voici un exemple de réponse, affichant deux lexiques nommés w3c et tomato. Pour chaque lexique, la réponse renvoie des métadonnées comme le code de langue auquel le lexique s'applique, le nombre de lexèmes définis dans le lexique, la taille en octets, etc. Le code de langue décrit une langue et des paramètres régionaux auxquels les lexèmes définis dans le lexique s'appliquent. { "Lexicons": [ { "Attributes": { "LanguageCode": "en-US", "LastModified": 1474222543.989, "Alphabet": "ipa", "LexemesCount": 1, "LexiconArn": "arn:aws:polly:aws-region:account-id:lexicon/ w3c", "Size": 495 }, "Name": "w3c" }, { "Attributes": { "LanguageCode": "en-US", "LastModified": 1473099290.858, "Alphabet": "ipa", "LexemesCount": 1, "LexiconArn": "arn:aws:polly:aws-region:account-id:lexicon/ tomato", "Size": 645 }, "Name": "tomato" } ] } 33 Amazon Polly Manuel du développeur DeleteLexicon L'exemple de code Python suivant utilise le AWS SDK for Python (Boto) pour Python (Boto) pour répertorier les lexiques dans votre compte dans la région spécifiée dans votre configuration AWS locale. Pour plus d'informations sur la création du fichier de configuration, consultez Étape 3.1 : Configuration de l'AWS Command Line Interface (AWS CLI) (p. 8). import sys from boto3 import Session from botocore.exceptions import BotoCoreError, ClientError # Create a client using the credentials and region defined in the adminuser # section of the AWS credentials and configuration files session = Session(profile_name="adminuser") polly = session.client("polly") try: # Request the list of available lexicons response = polly.list_lexicons() except (BotoCoreError, ClientError) as error: # The service returned an error, exit gracefully print(error) sys.exit(-1) # Get the list of lexicons in the response lexicons = response.get("Lexicons", []) print("{0} lexicon(s) found".format(len(lexicons))) # Output a formatted list of lexicons with some of the attributes for lexicon in lexicons: print((u" - {Name} ({Attributes[LanguageCode]}), " "{Attributes[LexemesCount]} lexeme(s)").format(**lexicon)) Utilisation de l'opération DeleteLexicon Amazon Polly fournit l'opération API DeleteLexicon (p. 61) pour supprimer un lexique de prononciation à partir d'une région spécifique AWS dans votre compte. L'AWS CLI suivante supprime le lexique spécifié. L'exemple d'AWS CLI suivant est mis en forme pour OS X, Linux et Unix. Pour exécuter cet exemple à l'invite de commande Windows, remplacez le caractère de continuation Unix (\) à la fin de chaque ligne par le caractère de continuation Windows (^). aws polly delete-lexicon \ --name example L'exemple de code Python suivant utilise le AWS SDK for Python (Boto) pour supprimer un lexique dans la région spécifiée dans votre configuration AWS locale. L'exemple supprime uniquement le lexique spécifié. Il vous est demandé de confirmer l'opération avant de supprimer réellement le lexique L'exemple de code suivant utilise des informations d'identification par défaut stockées dans le fichier de configuration AWS SDK. Pour plus d'informations sur la création du fichier de configuration, consultez Étape 3.1 : Configuration de l'AWS Command Line Interface (AWS CLI) (p. 8). from argparse import ArgumentParser 34 Amazon Polly Manuel du développeur DeleteLexicon from sys import version_info from boto3 import Session from botocore.exceptions import BotoCoreError, ClientError # Define and parse the command line arguments cli = ArgumentParser(description="DeleteLexicon example") cli.add_argument("name", type=str, metavar="LEXICON_NAME") arguments = cli.parse_args() # Create a client using the credentials and region defined in the adminuser # section of the AWS credentials and configuration files session = Session(profile_name="adminuser") polly = session.client("polly") # Request confirmation prompt = input if version_info >= (3, 0) else raw_input proceed = prompt((u"This will delete the \"{0}\" lexicon," " do you want to proceed? [y,n]: ").format(arguments.name)) if proceed in ("y", "Y"): print(u"Deleting {0}...".format(arguments.name)) try: # Request deletion of a lexicon by name response = polly.delete_lexicon(Name=arguments.name) except (BotoCoreError, ClientError) as error: # The service returned an error, exit gracefully cli.error(error) print("Done.") else: print("Cancelled.") 35 Amazon Polly Manuel du développeur Exemples d'applications Cette section fournit des exemples supplémentaires que vous pouvez utiliser pour explorer Amazon Polly. Avant de commencer à utiliser ces exemples, nous vous recommandons de lire tout d'abord Amazon Polly : fonctionnement (p. 3) et de suivre les étapes décrites dans Mise en route avec Amazon Polly (p. 5). Rubriques • Exemple de Python (client HTML5 et serveur Python) (p. 37) • Exemple Android (p. 48) • Exemple iOS (p. 50) 36 Amazon Polly Manuel du développeur Exemple Python Exemple de Python (client HTML5 et serveur Python) Cet exemple d'application comprend les éléments suivants : • Un serveur HTTP 1.1 utilisant l'encodage de transfert en bloc HTTP (voir Encodage de transfert en bloc) • Une simple interface utilisateur HTML5 qui interagit avec le serveur HTTP 1.1 (voir ci-dessous) : L'objectif de cet exemple est de montrer comment utiliser Amazon Polly pour diffuser la voix à partir d'une application HTML5 basée sur un navigateur. Pour les cas d'utilisation où la réactivité est très importante (par exemple, systèmes de dialogue, lecteurs d'écran, etc.), l'approche recommandée est de consommer le flux audio généré par Amazon Polly au fur et à mesure que le texte est synthétisé. Pour exécuter cet exemple d'application, vous avez besoin des éléments suivants : • Navigateur Web conforme aux normes HTML5 et EcmaScript5 (par exemple, Chrome 23.0 ou supérieur, Firefox 21.0 ou supérieur, Internet Explorer 9.0 ou supérieur) • Version de Python supérieure à la version 3.0 Pour tester l'application 1. Enregistrez le code de serveur sous le nom server.py. Pour le code , consultez Exemple de Python : Code du serveur Python (server.py) (p. 41). 2. Enregistrez le code de client HTML5 sous le nom index.html. Pour le code , consultez Exemple Python : Interface utilisateur HTML5 (index.html) (p. 38). 3. Exécutez la commande suivante à partir du chemin d'accès où vous avez enregistré server.py pour démarrer l'application (sur certains systèmes, vous devrez peut-être utiliser python3 au lieu de python lors de l'exécution la commande). 37 Amazon Polly Manuel du développeur Exemple Python : index.html $ python server.py Une fois que l'application a démarré, une URL s'affiche dans le terminal. 4. Ouvrez l'URL affiché dans le terminal dans un navigateur web. Vous pouvez transmettre l'adresse et le port du serveur d'application à utiliser comme paramètre dans server.py. Pour de plus amples informations, exécutez python server.py -h. 5. Pour écouter le discours, choisissez une voix dans la liste, tapez un texte, puis choisissez Read. La lecture du discours commence dès que Amazon Polly transfère le premier segment utilisable de données audio. 6. Pour arrêter le serveur Python lorsque vous avez terminé de tester l'application, appuyez sur Ctrl + C (Ctrl + Z sous Windows) dans le terminal du serveur. Note Le serveur crée un client Boto3 à l'aide de AWS SDK for Python (Boto). Le client utilise les informations d'identification stockées dans le fichier de configuration AWS sur votre ordinateur pour signer et identifier les demandes dans Amazon Polly. Pour plus d'informations sur la façon de créer le fichier de configuration AWS et de stocker les informations d'identification, consultez la page Configuration de l'interface de ligne de commande AWS dans le AWS Command Line Interface Guide de l'utilisateur. Exemple Python : Interface utilisateur HTML5 (index.html) Cette section fournit le code pour le client HTML5 décrit dans Exemple de Python (client HTML5 et serveur Python) (p. 37). <html> <head> <title>Text-to-Speech Example Application</title> <script> /* * This sample code requires a web browser with support for both the * HTML5 and ECMAScript 5 standards; the following is a noncomprehensive * list of compliant browsers and their minimum version: * * - Chrome 23.0+ * - Firefox 21.0+ * - Internet Explorer 9.0+ * - Edge 12.0+ * - Opera 15.0+ * - Safari 6.1+ * - Android (stock web browser) 4.4+ * - Chrome for Android 51.0+ * - Firefox for Android 48.0+ * - Opera Mobile 37.0+ * - iOS (Safari Mobile and Chrome) 3.2+ * - Internet Explorer Mobile 10.0+ * - Blackberry Browser 10.0+ */ 38 Amazon Polly Manuel du développeur Exemple Python : index.html // Mapping of the OutputFormat parameter of the SynthesizeSpeech API // and the audio format strings understood by the browser var AUDIO_FORMATS = { 'ogg_vorbis': 'audio/ogg', 'mp3': 'audio/mpeg', 'pcm': 'audio/wave; codecs=1' }; /** * Handles fetching JSON over HTTP */ function fetchJSON(method, url, onSuccess, onError) { var request = new XMLHttpRequest(); request.open(method, url, true); request.onload = function () { // If loading is complete if (request.readyState === 4) { // if the request was successful if (request.status === 200) { var data; // Parse the JSON in the response try { data = JSON.parse(request.responseText); } catch (error) { onError(request.status, error.toString()); } onSuccess(data); } else { onError(request.status, request.responseText) } } }; request.send(); } /** * Returns a list of audio formats supported by the browser */ function getSupportedAudioFormats(player) { return Object.keys(AUDIO_FORMATS) .filter(function (format) { var supported = player.canPlayType(AUDIO_FORMATS[format]); return supported === 'probably' || supported === 'maybe'; }); } // Initialize the application when the DOM is loaded and ready to be // manipulated document.addEventListener("DOMContentLoaded", function () { var input = document.getElementById('input'), voiceMenu = document.getElementById('voice'), text = document.getElementById('text'), player = document.getElementById('player'), submit = document.getElementById('submit'), supportedFormats = getSupportedAudioFormats(player); 39 Amazon Polly Manuel du développeur Exemple Python : index.html // Display a message and don't allow submitting the form if the // browser doesn't support any of the available audio formats if (supportedFormats.length === 0) { submit.disabled = true; alert('The web browser in use does not support any of the' + ' available audio formats. Please try with a different' + ' one.'); } // Play the audio stream when the form is submitted successfully input.addEventListener('submit', function (event) { // Validate the fields in the form, display a message if // unexpected values are encountered if (voiceMenu.selectedIndex <= 0 || text.value.length === 0) { alert('Please fill in all the fields.'); } else { var selectedVoice = voiceMenu .options[voiceMenu.selectedIndex] .value; // Point the player to the streaming server player.src = '/read?voiceId=' + encodeURIComponent(selectedVoice) + '&text=' + encodeURIComponent(text.value) + '&outputFormat=' + supportedFormats[0]; player.play(); } // Stop the form from submitting, // Submitting the form is allowed only if the browser doesn't // support Javascript to ensure functionality in such a case event.preventDefault(); }); // Load the list of available voices and display them in a menu fetchJSON('GET', '/voices', // If the request succeeds function (voices) { var container = document.createDocumentFragment(); // Build the list of options for the menu voices.forEach(function (voice) { var option = document.createElement('option'); option.value = voice['Id']; option.innerHTML = voice['Name'] + ' (' + voice['Gender'] + ', ' + voice['LanguageName'] + ')'; container.appendChild(option); }); // Add the options to the menu and enable the form field voiceMenu.appendChild(container); voiceMenu.disabled = false; }, // If the request fails function (status, response) { 40 Amazon Polly Manuel du développeur Exemple Python : server.py // Display a message in case loading data from the server // fails alert(status + ' - ' + response); }); }); </script> <style> #input { min-width: 100px; max-width: 600px; margin: 0 auto; padding: 50px; } #input div { margin-bottom: 20px; } #text { width: 100%; height: 200px; display: block; } #submit { width: 100%; } </style> </head> <body> <form id="input" method="GET" action="/read"> <div> <label for="voice">Select a voice:</label> <select id="voice" name="voiceId" disabled> <option value="">Choose a voice...</option> </select> </div> <div> <label for="text">Text to read:</label> <textarea id="text" maxlength="1000" minlength="1" name="text" placeholder="Type some text here..."></textarea> </div> <input type="submit" value="Read" id="submit" /> </form> <audio id="player"></audio> </body> </html> Exemple de Python : Code du serveur Python (server.py) Cette section fournit le code du serveur Python décrit dans Exemple de Python (client HTML5 et serveur Python) (p. 37). 41 Amazon Polly Manuel du développeur Exemple Python : server.py """ Example Python 2.7+/3.3+ Application This application consists of a HTTP 1.1 server using the HTTP chunked transfer coding (https://tools.ietf.org/html/rfc2616#section-3.6.1) and a minimal HTML5 user interface that interacts with it. The goal of this example is to start streaming the speech to the client (the HTML5 web UI) as soon as the first consumable chunk of speech is returned in order to start playing the audio as soon as possible. For use cases where low latency and responsiveness are strong requirements, this is the recommended approach. The service documentation contains examples for non-streaming use cases where waiting for the speech synthesis to complete and fetching the whole audio stream at once are an option. To test the application, run 'python server.py' and then open the URL displayed in the terminal in a web browser (see index.html for a list of supported browsers). The address and port for the server can be passed as parameters to server.py. For more information, run: 'python server.py -h' """ from argparse import ArgumentParser from collections import namedtuple from contextlib import closing from io import BytesIO from json import dumps as json_encode import os import sys if sys.version_info >= (3, 0): from http.server import BaseHTTPRequestHandler, HTTPServer from socketserver import ThreadingMixIn from urllib.parse import parse_qs else: from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer from SocketServer import ThreadingMixIn from urlparse import parse_qs from boto3 import Session from botocore.exceptions import BotoCoreError, ClientError ResponseStatus = namedtuple("HTTPStatus", ["code", "message"]) ResponseData = namedtuple("ResponseData", ["status", "content_type", "data_stream"]) # Mapping the output format used in the client to the content type for the # response AUDIO_FORMATS = {"ogg_vorbis": "audio/ogg", "mp3": "audio/mpeg", "pcm": "audio/wave; codecs=1"} CHUNK_SIZE = 1024 HTTP_STATUS = {"OK": ResponseStatus(code=200, message="OK"), 42 Amazon Polly Manuel du développeur Exemple Python : server.py "BAD_REQUEST": ResponseStatus(code=400, message="Bad request"), "NOT_FOUND": ResponseStatus(code=404, message="Not found"), "INTERNAL_SERVER_ERROR": ResponseStatus(code=500, message="Internal server error")} PROTOCOL = "http" ROUTE_INDEX = "/index.html" ROUTE_VOICES = "/voices" ROUTE_READ = "/read" # Create a client using the credentials and region defined in the adminuser # section of the AWS credentials and configuration files session = Session(profile_name="adminuser") polly = session.client("polly") class HTTPStatusError(Exception): """Exception wrapping a value from http.server.HTTPStatus""" def __init__(self, status, description=None): """ Constructs an error instance from a tuple of (code, message, description), see http.server.HTTPStatus """ super(HTTPStatusError, self).__init__() self.code = status.code self.message = status.message self.explain = description class ThreadedHTTPServer(ThreadingMixIn, HTTPServer): """An HTTP Server that handle each request in a new thread""" daemon_threads = True class ChunkedHTTPRequestHandler(BaseHTTPRequestHandler): """"HTTP 1.1 Chunked encoding request handler""" # Use HTTP 1.1 as 1.0 doesn't support chunked encoding protocol_version = "HTTP/1.1" def query_get(self, queryData, key, default=""): """Helper for getting values from a pre-parsed query string""" return queryData.get(key, [default])[0] def do_GET(self): """Handles GET requests""" # Extract values from the query string path, _, query_string = self.path.partition('?') query = parse_qs(query_string) response = None print(u"[START]: Received GET for %s with query: %s" % (path, query)) try: # Handle the possible request paths if path == ROUTE_INDEX: 43 Amazon Polly Manuel du développeur Exemple Python : server.py response elif path == response elif path == response else: response = self.route_index(path, query) ROUTE_VOICES: = self.route_voices(path, query) ROUTE_READ: = self.route_read(path, query) = self.route_not_found(path, query) self.send_headers(response.status, response.content_type) self.stream_data(response.data_stream) except HTTPStatusError as err: # Respond with an error and log debug # information if sys.version_info >= (3, 0): self.send_error(err.code, err.message, err.explain) else: self.send_error(err.code, err.message) self.log_error(u"%s %s %s - [%d] %s", self.client_address[0], self.command, self.path, err.code, err.explain) print("[END]") def route_not_found(self, path, query): """Handles routing for unexpected paths""" raise HTTPStatusError(HTTP_STATUS["NOT_FOUND"], "Page not found") def route_index(self, path, query): """Handles routing for the application's entry point'""" try: return ResponseData(status=HTTP_STATUS["OK"], content_type="text_html", # Open a binary stream for reading the index # HTML file data_stream=open(os.path.join(sys.path[0], path[1:]), "rb")) except IOError as err: # Couldn't open the stream raise HTTPStatusError(HTTP_STATUS["INTERNAL_SERVER_ERROR"], str(err)) def route_voices(self, path, query): """Handles routing for listing available voices""" params = {} voices = [] while True: try: # Request list of available voices, if a continuation token # was returned by the previous call then use it to continue # listing response = polly.describe_voices(**params) except (BotoCoreError, ClientError) as err: # The service returned an error raise HTTPStatusError(HTTP_STATUS["INTERNAL_SERVER_ERROR"], str(err)) 44 Amazon Polly Manuel du développeur Exemple Python : server.py # Collect all the voices voices.extend(response.get("Voices", [])) # If a continuation token was returned continue, stop iterating # otherwise if "NextToken" in response: params = {"NextToken": response["NextToken"]} else: break json_data = json_encode(voices) bytes_data = bytes(json_data, "utf-8") if sys.version_info >= (3, 0) \ else bytes(json_data) return ResponseData(status=HTTP_STATUS["OK"], content_type="application/json", # Create a binary stream for the JSON data data_stream=BytesIO(bytes_data)) def route_read(self, path, query): """Handles routing for reading text (speech synthesis)""" # Get the parameters from the query string text = self.query_get(query, "text") voiceId = self.query_get(query, "voiceId") outputFormat = self.query_get(query, "outputFormat") # Validate the parameters, set error flag in case of unexpected # values if len(text) == 0 or len(voiceId) == 0 or \ outputFormat not in AUDIO_FORMATS: raise HTTPStatusError(HTTP_STATUS["BAD_REQUEST"], "Wrong parameters") else: try: # Request speech synthesis response = polly.synthesize_speech(Text=text, VoiceId=voiceId, OutputFormat=outputFormat) except (BotoCoreError, ClientError) as err: # The service returned an error raise HTTPStatusError(HTTP_STATUS["INTERNAL_SERVER_ERROR"], str(err)) return ResponseData(status=HTTP_STATUS["OK"], content_type=AUDIO_FORMATS[outputFormat], # Access the audio stream in the response data_stream=response.get("AudioStream")) def send_headers(self, status, content_type): """Send out the group of headers for a successful request""" # Send HTTP headers self.send_response(status.code, status.message) self.send_header('Content-type', content_type) self.send_header('Transfer-Encoding', 'chunked') self.send_header('Connection', 'close') self.end_headers() 45 Amazon Polly Manuel du développeur Exemple Python : server.py def stream_data(self, stream): """Consumes a stream in chunks to produce the response's output'""" print("Streaming started...") if stream: # Note: Closing the stream is important as the service throttles on # the number of parallel connections. Here we are using # contextlib.closing to ensure the close method of the stream object # will be called automatically at the end of the with statement's # scope. with closing(stream) as managed_stream: # Push out the stream's content in chunks while True: data = managed_stream.read(CHUNK_SIZE) self.wfile.write(b"%X\r\n%s\r\n" % (len(data), data)) # If there's no more data to read, stop streaming if not data: break # Ensure any buffered output has been transmitted and close the # stream self.wfile.flush() print("Streaming completed.") else: # The stream passed in is empty self.wfile.write(b"0\r\n\r\n") print("Nothing to stream.") # Define and parse the command line arguments cli = ArgumentParser(description='Example Python Application') cli.add_argument( "-p", "--port", type=int, metavar="PORT", dest="port", default=8000) cli.add_argument( "--host", type=str, metavar="HOST", dest="host", default="localhost") arguments = cli.parse_args() # If the module is invoked directly, initialize the application if __name__ == '__main__': # Create and configure the HTTP server instance server = ThreadedHTTPServer((arguments.host, arguments.port), ChunkedHTTPRequestHandler) print("Starting server, use <Ctrl-C> to stop...") print(u"Open {0}://{1}:{2}{3} in a web browser.".format(PROTOCOL, arguments.host, arguments.port, ROUTE_INDEX)) try: # Listen for requests indefinitely server.serve_forever() except KeyboardInterrupt: # A request to terminate has been received, stop the server print("\nShutting down...") 46 Amazon Polly Manuel du développeur Exemple Python : server.py server.socket.close() 47 Amazon Polly Manuel du développeur Exemple Android Exemple Android L'exemple suivant utilise le SDK Android pour Amazon Polly pour lire le texte spécifié à l'aide d'une voix sélectionnée dans une liste de voix. Le code, affiché ici, couvre les tâches principales, mais ne gère pas les d'erreurs. Pour obtenir le code complet, consultez la démonstration Amazon Polly AWS SDK pour Android. Initialiser // Cognito pool ID. Pool needs to be unauthenticated pool with // Amazon Polly permissions. String COGNITO_POOL_ID = "YourCognitoIdentityPoolId"; // Region of Amazon Polly. Regions MY_REGION = Regions.US_EAST_1; // Initialize the Amazon Cognito credentials provider. CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider( getApplicationContext(), COGNITO_POOL_ID, MY_REGION ); // Create a client that supports generation of presigned URLs. AmazonPollyPresigningClient client = new AmazonPollyPresigningClient(credentialsProvider); Obtenir la liste des voix disponibles // Create describe voices request. DescribeVoicesRequest describeVoicesRequest = new DescribeVoicesRequest(); // Synchronously ask Amazon Polly to describe available TTS voices. DescribeVoicesResult describeVoicesResult = client.describeVoices(describeVoicesRequest); List<Voice> voices = describeVoicesResult.getVoices(); Obtenir l'URL du flux audio // Create speech synthesis request. SynthesizeSpeechPresignRequest synthesizeSpeechPresignRequest = new SynthesizeSpeechPresignRequest() // Set the text to synthesize. .withText("Hello world!") // Select voice for synthesis. .withVoiceId(voices.get(0).getId()) // "Joanna" // Set format to MP3. .withOutputFormat(OutputFormat.Mp3); // Get the presigned URL for synthesized speech audio stream. URL presignedSynthesizeSpeechUrl = 48 Amazon Polly Manuel du développeur Exemple Android client.getPresignedSynthesizeSpeechUrl(synthesizeSpeechPresignRequest); Lire la synthèse vocale // Use MediaPlayer: https://developer.android.com/guide/topics/media/ mediaplayer.html // Create a media player to play the synthesized audio stream. MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); try { // Set media player's data source to previously obtained URL. mediaPlayer.setDataSource(presignedSynthesizeSpeechUrl.toString()); } catch (IOException e) { Log.e(TAG, "Unable to set data source for the media player! " + e.getMessage()); } // Prepare the MediaPlayer asynchronously (since the data source is a network stream). mediaPlayer.prepareAsync(); // Set the callback to start the MediaPlayer when it's prepared. mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.start(); } }); // Set the callback to release the MediaPlayer after playback is completed. mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { mp.release(); } }); 49 Amazon Polly Manuel du développeur Exemple iOS Exemple iOS L'exemple suivant utilise le kit SDK iOS pour Amazon Polly pour lire le texte spécifié à l'aide d'une voix sélectionnée dans une liste de voix. Le code, affiché ici, couvre les tâches principales, mais ne gère pas les d'erreurs. Pour obtenir le code complet, consultez la démonstration Amazon Polly AWS SDK pour iOS. Initialiser // Region of Amazon Polly. let AwsRegion = AWSRegionType.usEast1 // Cognito pool ID. Pool needs to be unauthenticated pool with // Amazon Polly permissions. let CognitoIdentityPoolId = "YourCognitoIdentityPoolId" // Initialize the Amazon Cognito credentials provider. let credentialProvider = AWSCognitoCredentialsProvider(regionType: AwsRegion, identityPoolId: CognitoIdentityPoolId) // Create an audio player var audioPlayer = AVPlayer() Obtenir la liste des voix disponibles // Use the configuration as default AWSServiceManager.default().defaultServiceConfiguration = configuration // Get all the voices (no parameters specified in input) from Amazon Polly // This creates an async task. let task = AWSPolly.default().describeVoices(AWSPollyDescribeVoicesInput()) // When the request is done, asynchronously do the following block // (we ignore all the errors, but in a real-world scenario they need // to be handled) task.continue(successBlock: { (awsTask: AWSTask) -> Any? in // awsTask.result is an instance of AWSPollyDescribeVoicesOutput in // case of the "describeVoices" method let voices = (awsTask.result! as AWSPollyDescribeVoicesOutput).voices return nil }) Synthèse vocale // First, Amazon Polly requires an input, which we need to prepare. // Again, we ignore the errors, however this should be handled in // real applications. Here we are using the URL Builder Request, // since in order to make the synthesis quicker we will pass the // presigned URL to the system audio player. let input = AWSPollySynthesizeSpeechURLBuilderRequest() // Text to synthesize 50 Amazon Polly Manuel du développeur Exemple iOS input.text = “Sample text” // We expect the output in MP3 format input.outputFormat = AWSPollyOutputFormat.mp3 // Choose the voice ID input.voiceId = AWSPollyVoiceId.joanna // Create an task to synthesize speech using the given synthesis input let builder = AWSPollySynthesizeSpeechURLBuilder.default().getPreSignedURL(input) // Request the URL for synthesis result builder.continue(successBlock: { (awsTask: AWSTask<NSURL>) -> Any? in // The result of getPresignedURL task is NSURL. // Again, we ignore the errors in the example. let url = awsTask.result! // Try playing the data using the system AVAudioPlayer self.audioPlayer.replaceCurrentItem(with: AVPlayerItem(url: url as URL)) self.audioPlayer.play() return nil }) 51 Amazon Polly Manuel du développeur Régions prises en charge Limites d'Amazon Polly Ci-après, figurent les limites à prendre en compte lors de l'utilisation d'Amazon Polly. Régions prises en charge Pour obtenir la liste des régions AWS où Amazon Polly est disponible, consultez la page Régions et points de terminaison AWS dans le Référence générale d'Amazon Web Services. Limitation • Taux de limitation par adresse IP : 20 requêtes par seconde (rps) avec une limite en mode rafale de 40 rps. • Taux de limitation par compte : 10 requêtes par seconde (rps) avec une limite en mode rafale de 20 rps. Connexions simultanées par compte : 30 • Taux de limitation par opération : Opération Limite Lexique DeleteLexicon 2 requêtes par seconde (rps) à partir de ces opérations combinées. PutLexicon Maximum autorisé en mode rafale de 4 rps. GetLexicon ListLexicons Discours DescribeVoices 10 rps avec une limite en mode rafale de 20 rps SynthesizeSpeech 10 rps avec une limite en mode rafale de 20 rps 52 Amazon Polly Manuel du développeur Lexiques de prononciation Lexiques de prononciation • Vous pouvez stocker jusqu'à 100 lexiques par compte. • Les noms des lexiques peuvent être constitués d'une chaîne alphanumérique de 20 caractères maximum. • Chaque lexique peut comporter jusqu'à 4 000 caractères maximum. • Vous pouvez spécifier jusqu'à 100 caractères pour chaque remplacement de phonème<> ou d'alias<> dans un lexique. Pour plus d'informations sur l'utilisation des lexiques, consultez Gestion des lexiques (p. 21). Opération API SynthesizeSpeech Notez les limites suivantes liées à l'utilisation de l'opération API SynthesizeSpeech : • Le texte d'entrée peut comporter un maximum de 1 500 caractères facturés (3 000 caractères au total). Les balises SSML ne sont pas considérées comme des caractères facturés. • Vous pouvez spécifier jusqu'à cinq lexiques à appliquer au texte saisi. • Le flux audio de sortie (synthèse) est limité à 5 minutes, au-delà desquelles, le discours restant est coupé. Pour plus d'informations, consultez SynthesizeSpeech (p. 71). Synthèse vocale SSML (Markup Language) Notez les limites suivantes liées à l'utilisation du langage SSML : • Les balises <audio>, <lexicon>, <lookup> et <voice> ne sont pas prises en charge. • Les éléments <break> peuvent spécifier une durée maximale de 10 secondes chacun. • La balise <prosody> ne prend pas en charge les valeurs inférieures à -80 % pour l'attribut de taux. Pour plus d'informations, consultez Utilisation de SSML (p. 14). 53 Amazon Polly Manuel du développeur Informations relatives à Amazon Polly dans CloudTrail Journalisation des appels d'API Amazon Polly avec AWS CloudTrail Amazon Polly est intégré dans CloudTrail, un service qui enregistre tous les appels APIAmazon Polly et transmet les fichiers-journaux dans un compartiment Amazon S3 que vous spécifiez. CloudTrail enregistré les appels d'API provenant de la console Amazon Polly ou de votre code aux API Amazon Polly. Les informations collectées par CloudTrail vous permettent de déterminer quelle demande a été envoyée à Amazon Polly, l'adresse IP source à partir de laquelle la demande a été effectuée, qui a effectué la demande, quand, etc. Pour en savoir plus sur CloudTrail, y compris la façon de le configurer et de l'activer, consultez le manuel AWS CloudTrail User Guide. Informations relatives à Amazon Polly dans CloudTrail Lorsque la journalisation CloudTrailest activée dans votre compte AWS, les appels d'API effectués à destination des actions Amazon Polly sont suivis dans les fichiers journaux CloudTrail, où ils sont écrits avec d'autres enregistrements de services AWS. CloudTrail détermine quand créer un fichier et écrire dedans en fonction d'une période et d'une taille de fichier. Toutes les actions Amazon Polly sont consignées par CloudTrail et sont documentées dans la Référence de l'API Amazon Polly (p. 60). Les actions suivantes sont prises en charge. • DeleteLexicon (p. 61) • DescribeVoices (p. 63) • GetLexicon (p. 65) • ListLexicons (p. 67) • PutLexicon (p. 69) • SynthesizeSpeech (p. 71) Chaque entrée du journal contient des informations sur la personne qui a généré la demande. Les informations d'identité de l'utilisateur dans l'entrée de journal permettent de déterminer les éléments suivants : 54 Amazon Polly Manuel du développeur Présentation des entrées des fichiers journaux Amazon Polly • Si la demande a été effectuée avec les informations d'identification utilisateur racine ou IAM • Si la demande a été effectuée avec des informations d'identification de sécurité temporaires pour un rôle ou un utilisateur fédéré • Si la demande a été effectuée par un autre service AWS Pour plus d'informations, consultez la section CloudTrail userIdentity Element. Vous pouvez stocker vos fichiers journaux dans votre compartiment Amazon S3 aussi longtemps que vous le souhaitez, mais vous pouvez également définir des règles de cycle de vie Amazon S3 pour archiver ou supprimer automatiquement les fichiers journaux. Par défaut, vos fichiers journaux sont chiffrés avec le chiffrement côté serveur (SSE) de Amazon S3. Si vous souhaitez être averti de la remise des fichiers journaux, vous pouvez configurer CloudTrail pour qu'il publie des notifications Amazon SNS lorsque de nouveaux fichiers journaux sont remis. Pour plus d'informations, consultez Configuring Amazon SNS Notifications for CloudTrail. Vous pouvez également regrouper des fichiers journaux Amazon Polly provenant de plusieurs régions AWS et de plusieurs comptes AWS dans un compartiment Amazon S3 unique. Pour plus d'informations, consultez Receiving CloudTrail Log Files from Multiple Regions et Receiving CloudTrail Log Files from Multiple Accounts. Présentation des entrées des fichiers journaux Amazon Polly Les fichiers journaux CloudTrail peuvent contenir une ou plusieurs des entrées de journal. Chaque entrée répertorie plusieurs événements au format JSON. Une entrée de journal représente une demande individuelle à partir de n'importe quelle source et comprend des informations sur l'action demandée, sur la date et l'heure de l'action, sur les paramètres de la demande, etc. Les entrées de journal ne sont pas des arborescences des appels de procédure des appels d'API publique. Elle ne s'affichent donc dans aucun ordre précis. En raison des éventuels problèmes de confidentialité, les entrées de journal ne contiennent pas le texte synthétisé. A la place, ce texte est consigné dans l'entrée de journal. L'exemple suivant montre une entrée de journal CloudTrail qui illustre l'action SynthesizeSpeech. { "Records": [ { "awsRegion": "us-east-1", "eventID": "19bd70f7-5e60-4cdc-9825-936c552278ae", "eventName": "SynthesizeSpeech", "eventSource": "tts.amazonaws.com", "eventTime": "2016-11-02T03:49:39Z", "eventType": "AwsApiCall", "eventVersion": "1.05", "recipientAccountId": "123456789012", "requestID": "414288c2-a1af-11e6-b17f-d7cfc06cb461", "requestParameters": { "lexiconNames": [ "SampleLexicon" ], "outputFormat": "mp3", "sampleRate": "22050", 55 Amazon Polly Manuel du développeur Présentation des entrées des fichiers journaux Amazon Polly "text": "**********", "textType": "text", "voiceId": "Kendra" }, "responseElements": { "contentType": "audio/mpeg", "requestCharacters": 25 }, "sourceIPAddress": "1.2.3.4", "userAgent": "Amazon CLI/Polly 1.10 API 2016-06-10", "userIdentity": { "accessKeyId": "EXAMPLE_KEY_ID", "accountId": "123456789012", "arn": "arn:aws:iam::123456789012:user/Alice", "principalId": "EX_PRINCIPAL_ID", "type": "IAMUser", "userName": "Alice" } } ] } L'élément eventName identifie l'action qui s'est produite et il peut inclure des informations de date et de version, telles que "SynthesizeSpeech20161128". Néanmoins, il fait toujours référence à la même API publique. 56 Amazon Polly Manuel du développeur Métriques CloudWatch (Console) Intégration de CloudWatch avec Amazon Polly Lorsque vous interagissez avec Amazon Polly, les métriques et les dimensions suivantes sont envoyées à CloudWatch toutes les minutes. Vous pouvez utiliser les procédures suivantes pour afficher les métriques d'Amazon Polly. Vous pouvez contrôler Amazon Polly à l'aide de CloudWatch, qui recueille et traite les données brutes de Amazon Polly en métriques lisibles et disponibles pratiquement en temps réel. Ces statistiques sont enregistrées pour une durée de deux semaines et, par conséquent, vous pouvez accéder aux historical information et acquérir un meilleur point de vue sur les performances de votre service ou application Web. Par défaut, les données des métriques Amazon Polly sont envoyées à CloudWatch chaque minute. Pour plus d'informations, consultez la page Qu'est-ce qu'Amazon CloudWatch du guide de l'utilisateur CloudWatch Amazon. Métriques CloudWatch (Console) 1. Ouvrez la console CloudWatch à l'adresse https://console.aws.amazon.com/cloudwatch/. 2. Dans le volet de navigation, choisissez Metrics. 3. Dans le volet CloudWatch Metrics by Category, sous la catégorie de métriques Amazon Polly, sélectionnez une catégorie de métriques, puis, dans le volet supérieur, faites défiler l'écran pour afficher la liste complète des métriques. Métriques CloudWatch (Interface de ligne de commande) Le code suivant affiche les métriques disponibles pour Amazon Polly. aws cloudwatch list-metrics --namespace "AWS/Polly" 57 Amazon Polly Manuel du développeur Métriques Amazon Polly La commande précédente retourne une liste des métriques Amazon Polly similaires à ce qui suit. L'élément MetricName identifie ce qu'est la métrique. { "Metrics": [ { "Namespace": "AWS/Polly", "Dimensions": [ { "Name": "Operation", "Value": "SynthesizeSpeech" } ], "MetricName": "ResponseLatency" }, { "Namespace": "AWS/Polly", "Dimensions": [ { "Name": "Operation", "Value": "SynthesizeSpeech" } ], "MetricName": "RequestCharacters" } Pour plus d'informations, consultez GetMetricStatistics dans la Référence de l'API Amazon CloudWatch. Métriques Amazon Polly Amazon Polly produit les métriques suivantes pour chaque demande. Ces métriques sont regroupées et envoyées, par intervalles d'une minute, à CloudWatch où elles sont disponibles. Métrique Description RequestCharacters Nombre de caractères de la demande. Il s'agit de caractères facturables uniquement ; les balises SSML ne sont pas incluses. Dimension valide : Opération Statistiques valides : Minimum, Maximum, Moyenne, Exemple de comptage, Somme Unité : nombre ResponseLatency Latence entre le moment où la demande a été faite et le début de la réponse de diffusion en continu. Dimensions valides : Operation Statistiques valides : Minimum, Maximum, Moyenne, Exemple de comptage Unité : millisecondes 58 Amazon Polly Manuel du développeur Dimensions pour les métriques Amazon Polly Métrique Description 2XXCount Code HTTP 200 retourné lors d'une réponse positive. Dimensions valides : Operation Statistiques valides : Moyenne, Exemple de comptage, Somme Unité : nombre 4XXCount Code erreur HTTP 400 retourné en cas d'erreur. Pour chaque réponse aboutie, un zéro (0) est émis. Dimensions valides : Operation Statistiques valides : Moyenne, Exemple de comptage, Somme Unité : nombre 5XXCount Code erreur HTTP 500 retourné en cas d'erreur. Pour chaque réponse aboutie, un zéro (0) est émis. Dimensions valides : Operation Statistiques valides : Moyenne, Exemple de comptage, Somme Unité : nombre Dimensions pour les métriques Amazon Polly Les métriques Amazon Polly utilisent l'espace de noms AWS/Polly et fournissent les métriques pour les dimensions suivantes : Dimension Description Operation Les métriques sont regroupées par la méthode d'API à laquelle elles font référence. Les valeurs possibles sont SynthesizeSpeech, PutLexicon, DescribeVoices, etc. 59 Amazon Polly Manuel du développeur Actions Référence de l'API Amazon Polly Cette section contient la référence de l'API Amazon Polly. Note Les appels d'API authentifiés doivent être signés à l'aide du processus de signature « Signature Version 4 ». Pour plus d'informations, consultez Signature des requêtes d'API AWS du Référence générale d'Amazon Web Services. Rubriques • Actions (p. 60) • Data Types (p. 73) Actions The following actions are supported: • DeleteLexicon (p. 61) • DescribeVoices (p. 63) • GetLexicon (p. 65) • ListLexicons (p. 67) • PutLexicon (p. 69) • SynthesizeSpeech (p. 71) 60 Amazon Polly Manuel du développeur DeleteLexicon DeleteLexicon Deletes the specified pronunciation lexicon stored in an AWS Region. A lexicon which has been deleted is not available for speech synthesis, nor is it possible to retrieve it using either the GetLexicon or ListLexicon APIs. For more information, see Managing Lexicons. Request Syntax DELETE /v1/lexicons/LexiconName HTTP/1.1 URI Request Parameters The request requires the following URI parameters. Name (p. 61) The name of the lexicon to delete. Must be an existing lexicon in the region. Pattern: [0-9A-Za-z]{1,20} Request Body The request does not have a request body. Response Syntax HTTP/1.1 200 Response Elements If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body. Errors LexiconNotFoundException Amazon Polly can't find the specified lexicon. This could be caused by a lexicon that is missing, its name is misspelled or specifying a lexicon that is in a different region. Verify that the lexicon exists, is in the region (see ListLexicons (p. 67)) and that you spelled its name is spelled correctly. Then try again. HTTP Status Code: 404 ServiceFailureException An unknown condition has caused a service failure. HTTP Status Code: 500 See Also For more information about using this API in one of the language-specific AWS SDKs, see the following: • AWS Command Line Interface • AWS SDK for .NET • AWS SDK for C++ • AWS SDK for Go 61 Amazon Polly Manuel du développeur DeleteLexicon • AWS SDK for Java • AWS SDK for JavaScript • AWS SDK for PHP V3 • AWS SDK for Python • AWS SDK for Ruby V2 62 Amazon Polly Manuel du développeur DescribeVoices DescribeVoices Returns the list of voices that are available for use when requesting speech synthesis. Each voice speaks a specified language, is either male or female, and is identified by an ID, which is the ASCII version of the voice name. When synthesizing speech ( SynthesizeSpeech ), you provide the voice ID for the voice you want from the list of voices returned by DescribeVoices. For example, you want your news reader application to read news in a specific language, but giving a user the option to choose the voice. Using the DescribeVoices operation you can provide the user with a list of available voices to select from. You can optionally specify a language code to filter the available voices. For example, if you specify en-US, the operation returns a list of all available US English voices. This operation requires permissions to perform the polly:DescribeVoices action. Request Syntax GET /v1/voices?LanguageCode=LanguageCode&NextToken=NextToken HTTP/1.1 URI Request Parameters The request requires the following URI parameters. LanguageCode (p. 63) The language identification tag (ISO 639 code for the language name-ISO 3166 country code) for filtering the list of voices returned. If you don't specify this optional parameter, all available voices are returned. Valid Values: cy-GB | da-DK | de-DE | en-AU | en-GB | en-GB-WLS | en-IN | enUS | es-ES | es-US | fr-CA | fr-FR | is-IS | it-IT | ja-JP | nb-NO | nl-NL | pl-PL | pt-BR | pt-PT | ro-RO | ru-RU | sv-SE | tr-TR NextToken (p. 63) An opaque pagination token returned from the previous DescribeVoices operation. If present, this indicates where to continue the listing. Request Body The request does not have a request body. Response Syntax HTTP/1.1 200 Content-type: application/json { "NextToken": "string", "Voices": [ { "Gender": "string", "Id": "string", "LanguageCode": "string", "LanguageName": "string", "Name": "string" } ] } 63 Amazon Polly Manuel du développeur DescribeVoices Response Elements If the action is successful, the service sends back an HTTP 200 response. The following data is returned in JSON format by the service. NextToken (p. 63) The pagination token to use in the next request to continue the listing of voices. NextToken is returned only if the response is truncated. Type: String Voices (p. 63) A list of voices with their properties. Type: array of Voice (p. 77) objects Errors InvalidNextTokenException The NextToken is invalid. Verify that it's spelled correctly, and then try again. HTTP Status Code: 400 ServiceFailureException An unknown condition has caused a service failure. HTTP Status Code: 500 See Also For more information about using this API in one of the language-specific AWS SDKs, see the following: • AWS Command Line Interface • AWS SDK for .NET • AWS SDK for C++ • AWS SDK for Go • AWS SDK for Java • AWS SDK for JavaScript • AWS SDK for PHP V3 • AWS SDK for Python • AWS SDK for Ruby V2 64 Amazon Polly Manuel du développeur GetLexicon GetLexicon Returns the content of the specified pronunciation lexicon stored in an AWS Region. For more information, see Managing Lexicons. Request Syntax GET /v1/lexicons/LexiconName HTTP/1.1 URI Request Parameters The request requires the following URI parameters. Name (p. 65) Name of the lexicon. Pattern: [0-9A-Za-z]{1,20} Request Body The request does not have a request body. Response Syntax HTTP/1.1 200 Content-type: application/json { "Lexicon": { "Content": "string", "Name": "string" }, "LexiconAttributes": { "Alphabet": "string", "LanguageCode": "string", "LastModified": number, "LexemesCount": number, "LexiconArn": "string", "Size": number } } Response Elements If the action is successful, the service sends back an HTTP 200 response. The following data is returned in JSON format by the service. Lexicon (p. 65) Lexicon object that provides name and the string content of the lexicon. Type: Lexicon (p. 74) object LexiconAttributes (p. 65) Metadata of the lexicon, including phonetic alphabetic used, language code, lexicon ARN, number of lexemes defined in the lexicon, and size of lexicon in bytes. Type: LexiconAttributes (p. 75) object 65 Amazon Polly Manuel du développeur GetLexicon Errors LexiconNotFoundException Amazon Polly can't find the specified lexicon. This could be caused by a lexicon that is missing, its name is misspelled or specifying a lexicon that is in a different region. Verify that the lexicon exists, is in the region (see ListLexicons (p. 67)) and that you spelled its name is spelled correctly. Then try again. HTTP Status Code: 404 ServiceFailureException An unknown condition has caused a service failure. HTTP Status Code: 500 See Also For more information about using this API in one of the language-specific AWS SDKs, see the following: • AWS Command Line Interface • AWS SDK for .NET • AWS SDK for C++ • AWS SDK for Go • AWS SDK for Java • AWS SDK for JavaScript • AWS SDK for PHP V3 • AWS SDK for Python • AWS SDK for Ruby V2 66 Amazon Polly Manuel du développeur ListLexicons ListLexicons Returns a list of pronunciation lexicons stored in an AWS Region. For more information, see Managing Lexicons. Request Syntax GET /v1/lexicons?NextToken=NextToken HTTP/1.1 URI Request Parameters The request requires the following URI parameters. NextToken (p. 67) An opaque pagination token returned from previous ListLexicons operation. If present, indicates where to continue the list of lexicons. Request Body The request does not have a request body. Response Syntax HTTP/1.1 200 Content-type: application/json { "Lexicons": [ { "Attributes": { "Alphabet": "string", "LanguageCode": "string", "LastModified": number, "LexemesCount": number, "LexiconArn": "string", "Size": number }, "Name": "string" } ], "NextToken": "string" } Response Elements If the action is successful, the service sends back an HTTP 200 response. The following data is returned in JSON format by the service. Lexicons (p. 67) A list of lexicon names and attributes. Type: array of LexiconDescription (p. 76) objects NextToken (p. 67) The pagination token to use in the next request to continue the listing of lexicons. NextToken is returned only if the response is truncated. Type: String 67 Amazon Polly Manuel du développeur ListLexicons Errors InvalidNextTokenException The NextToken is invalid. Verify that it's spelled correctly, and then try again. HTTP Status Code: 400 ServiceFailureException An unknown condition has caused a service failure. HTTP Status Code: 500 See Also For more information about using this API in one of the language-specific AWS SDKs, see the following: • AWS Command Line Interface • AWS SDK for .NET • AWS SDK for C++ • AWS SDK for Go • AWS SDK for Java • AWS SDK for JavaScript • AWS SDK for PHP V3 • AWS SDK for Python • AWS SDK for Ruby V2 68 Amazon Polly Manuel du développeur PutLexicon PutLexicon Stores a pronunciation lexicon in an AWS Region. If a lexicon with the same name already exists in the region, it is overwritten by the new lexicon. Lexicon operations have eventual consistency, therefore, it might take some time before the lexicon is available to the SynthesizeSpeech operation. For more information, see Managing Lexicons. Request Syntax PUT /v1/lexicons/LexiconName HTTP/1.1 Content-type: application/json { "Content": "string" } URI Request Parameters The request requires the following URI parameters. Name (p. 69) Name of the lexicon. The name must follow the regular express format [0-9A-Za-z]{1,20}. That is, the name is a case-sensitive alphanumeric string up to 20 characters long. Pattern: [0-9A-Za-z]{1,20} Request Body The request accepts the following data in JSON format. Content (p. 69) Content of the PLS lexicon as string data. Type: String Required: Yes Response Syntax HTTP/1.1 200 Response Elements If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body. Errors InvalidLexiconException Amazon Polly can't find the specified lexicon. Verify that the lexicon's name is spelled correctly, and then try again. HTTP Status Code: 400 LexiconSizeExceededException The maximum size of the specified lexicon would be exceeded by this operation. HTTP Status Code: 400 MaxLexemeLengthExceededException The maximum size of the lexeme would be exceeded by this operation. 69 Amazon Polly Manuel du développeur PutLexicon HTTP Status Code: 400 MaxLexiconsNumberExceededException The maximum number of lexicons would be exceeded by this operation. HTTP Status Code: 400 ServiceFailureException An unknown condition has caused a service failure. HTTP Status Code: 500 UnsupportedPlsAlphabetException The alphabet specified by the lexicon is not a supported alphabet. Valid values are x-sampa and ipa. HTTP Status Code: 400 UnsupportedPlsLanguageException The language specified in the lexicon is unsupported. For a list of supported languages, see Lexicon Attributes. HTTP Status Code: 400 See Also For more information about using this API in one of the language-specific AWS SDKs, see the following: • AWS Command Line Interface • AWS SDK for .NET • AWS SDK for C++ • AWS SDK for Go • AWS SDK for Java • AWS SDK for JavaScript • AWS SDK for PHP V3 • AWS SDK for Python • AWS SDK for Ruby V2 70 Amazon Polly Manuel du développeur SynthesizeSpeech SynthesizeSpeech Synthesizes UTF-8 input, plain text or SSML, to a stream of bytes. SSML input must be valid, wellformed SSML. Some alphabets might not be available with all the voices (for example, Cyrillic might not be read at all by English voices) unless phoneme mapping is used. For more information, see How it Works. Request Syntax POST /v1/speech HTTP/1.1 Content-type: application/json { "LexiconNames": [ "string" ], "OutputFormat": "string", "SampleRate": "string", "Text": "string", "TextType": "string", "VoiceId": "string" } URI Request Parameters The request does not use any URI parameters. Request Body The request accepts the following data in JSON format. LexiconNames (p. 71) List of one or more pronunciation lexicon names you want the service to apply during synthesis. Lexicons are applied only if the language of the lexicon is the same as the language of the voice. For information about storing lexicons, see PutLexicon. Type: array of Strings Array Members: Maximum number of 5 items. Pattern: [0-9A-Za-z]{1,20} Required: No OutputFormat (p. 71) The audio format in which the resulting stream will be encoded. Type: String Valid Values: mp3 | ogg_vorbis | pcm Required: Yes SampleRate (p. 71) The audio frequency specified in Hz. The valid values for mp3 and ogg_vorbis are "8000", "16000", and "22050". The default value is "22050". Valid values for pcm are "8000" and "16000" The default value is "16000". Type: String Required: No Text (p. 71) Input text to synthesize. If you specify ssml as the TextType, follow the SSML format for the input text. Type: String Required: Yes 71 Amazon Polly Manuel du développeur SynthesizeSpeech TextType (p. 71) Specifies whether the input text is plain text or SSML. The default value is plain text. For more information, see Using SSML. Type: String Valid Values: ssml | text Required: No VoiceId (p. 71) Voice ID to use for the synthesis. You can get a list of available voice IDs by calling the DescribeVoices operation. Type: String Valid Values: Geraint | Gwyneth | Mads | Naja | Hans | Marlene | Nicole | Russell | Amy | Brian | Emma | Raveena | Ivy | Joanna | Joey | Justin | Kendra | Kimberly | Salli | Conchita | Enrique | Miguel | Penelope | Chantal | Celine | Mathieu | Dora | Karl | Carla | Giorgio | Mizuki | Liv | Lotte | Ruben | Ewa | Jacek | Jan | Maja | Ricardo | Vitoria | Cristiano | Ines | Carmen | Maxim | Tatyana | Astrid | Filiz Required: Yes Response Syntax HTTP/1.1 200 Content-Type: ContentType x-amzn-RequestCharacters: RequestCharacters AudioStream Response Elements If the action is successful, the service sends back an HTTP 200 response. The response returns the following HTTP headers. ContentType (p. 72) Specifies the type audio stream. This should reflect the OutputFormat parameter in your request. • If you request mp3 as the OutputFormat, the ContentType returned is audio/mpeg. • If you request ogg_vorbis as the OutputFormat, the ContentType returned is audio/ogg. • If you request pcm as the OutputFormat, the ContentType returned is audio/pcm in a signed 16-bit, 1 channel (mono), little-endian format. RequestCharacters (p. 72) Number of characters synthesized. The response returns the following as the HTTP body. <varlistentry> AudioStream (p. 72) Stream containing the synthesized speech. </varlistentry> Errors InvalidSampleRateException The specified sample rate is not valid. HTTP Status Code: 400 72 Amazon Polly Manuel du développeur Data Types InvalidSsmlException The SSML you provided is invalid. Verify the SSML syntax, spelling of tags and values, and then try again. HTTP Status Code: 400 LexiconNotFoundException Amazon Polly can't find the specified lexicon. This could be caused by a lexicon that is missing, its name is misspelled or specifying a lexicon that is in a different region. Verify that the lexicon exists, is in the region (see ListLexicons (p. 67)) and that you spelled its name is spelled correctly. Then try again. HTTP Status Code: 404 ServiceFailureException An unknown condition has caused a service failure. HTTP Status Code: 500 TextLengthExceededException The value of the "Text" parameter is longer than the accepted limits. The limit for input text is a maximum of 3000 characters total, of which no more than 1500 can be billed characters. SSML tags are not counted as billed characters. HTTP Status Code: 400 See Also For more information about using this API in one of the language-specific AWS SDKs, see the following: • AWS Command Line Interface • AWS SDK for .NET • AWS SDK for C++ • AWS SDK for Go • AWS SDK for Java • AWS SDK for JavaScript • AWS SDK for PHP V3 • AWS SDK for Python • AWS SDK for Ruby V2 Data Types The following data types are supported: • Lexicon (p. 74) • LexiconAttributes (p. 75) • LexiconDescription (p. 76) • Voice (p. 77) 73 Amazon Polly Manuel du développeur Lexicon Lexicon Provides lexicon name and lexicon content in string format. For more information, see Pronunciation Lexicon Specification (PLS) Version 1.0. Contents Content Lexicon content in string format. The content of a lexicon must be in PLS format. Type: String Required: No Name Name of the lexicon. Type: String Pattern: [0-9A-Za-z]{1,20} Required: No See Also For more information about using this API in one of the language-specific AWS SDKs, see the following: • AWS SDK for C++ • AWS SDK for Go • AWS SDK for Java • AWS SDK for Ruby V2 74 Amazon Polly Manuel du développeur LexiconAttributes LexiconAttributes Contains metadata describing the lexicon such as the number of lexemes, language code, and so on. For more information, see Managing Lexicons. Contents Alphabet Phonetic alphabet used in the lexicon. Valid values are ipa and x-sampa. Type: String Required: No LanguageCode Language code that the lexicon applies to. A lexicon with a language code such as "en" would be applied to all English languages (en-GB, en-US, en-AUS, en-WLS, and so on. Type: String Valid Values: cy-GB | da-DK | de-DE | en-AU | en-GB | en-GB-WLS | en-IN | enUS | es-ES | es-US | fr-CA | fr-FR | is-IS | it-IT | ja-JP | nb-NO | nl-NL | pl-PL | pt-BR | pt-PT | ro-RO | ru-RU | sv-SE | tr-TR Required: No LastModified Date lexicon was last modified (a timestamp value). Type: Timestamp Required: No LexemesCount Number of lexemes in the lexicon. Type: Integer Required: No LexiconArn Amazon Resource Name (ARN) of the lexicon. Type: String Required: No Size Total size of the lexicon, in characters. Type: Integer Required: No See Also For more information about using this API in one of the language-specific AWS SDKs, see the following: • AWS SDK for C++ • AWS SDK for Go • AWS SDK for Java • AWS SDK for Ruby V2 75 Amazon Polly Manuel du développeur LexiconDescription LexiconDescription Describes the content of the lexicon. Contents Attributes Provides lexicon metadata. Type: LexiconAttributes (p. 75) object Required: No Name Name of the lexicon. Type: String Pattern: [0-9A-Za-z]{1,20} Required: No See Also For more information about using this API in one of the language-specific AWS SDKs, see the following: • AWS SDK for C++ • AWS SDK for Go • AWS SDK for Java • AWS SDK for Ruby V2 76 Amazon Polly Manuel du développeur Voice Voice Description of the voice. Contents Gender Gender of the voice. Type: String Valid Values: Female | Male Required: No Id Amazon Polly assigned voice ID. This is the ID that you specify when calling the SynthesizeSpeech operation. Type: String Valid Values: Geraint | Gwyneth | Mads | Naja | Hans | Marlene | Nicole | Russell | Amy | Brian | Emma | Raveena | Ivy | Joanna | Joey | Justin | Kendra | Kimberly | Salli | Conchita | Enrique | Miguel | Penelope | Chantal | Celine | Mathieu | Dora | Karl | Carla | Giorgio | Mizuki | Liv | Lotte | Ruben | Ewa | Jacek | Jan | Maja | Ricardo | Vitoria | Cristiano | Ines | Carmen | Maxim | Tatyana | Astrid | Filiz Required: No LanguageCode Language code of the voice. Type: String Valid Values: cy-GB | da-DK | de-DE | en-AU | en-GB | en-GB-WLS | en-IN | enUS | es-ES | es-US | fr-CA | fr-FR | is-IS | it-IT | ja-JP | nb-NO | nl-NL | pl-PL | pt-BR | pt-PT | ro-RO | ru-RU | sv-SE | tr-TR Required: No LanguageName Human readable name of the language in English. Type: String Required: No Name Name of the voice (for example, Salli, Kendra, etc.). This provides a human readable voice name that you might display in your application. Type: String Required: No See Also For more information about using this API in one of the language-specific AWS SDKs, see the following: • • • • AWS SDK for C++ AWS SDK for Go AWS SDK for Java AWS SDK for Ruby V2 77 Amazon Polly Manuel du développeur Authentification Authentification et contrôle d'accès pour Amazon Polly L'accès à Amazon Polly requiert des informations d'identification. Ces informations d'identification doivent disposer d'autorisations pour accéder aux ressources AWS, telles qu'une table Amazon Polly lexicon ou une instance Amazon Elastic Compute Cloud (Amazon EC2). Les sections suivantes décrivent comment utiliser AWS Identity and Access Management (IAM) et Amazon Polly pour contribuer à sécuriser l'accès à vos ressources. • Authentification (p. 78) • Contrôle d'accès (p. 79) Authentification Vous pouvez utiliser les types d'identité suivants pour accéder à AWS : • Utilisateur racine du compte AWS – Lorsque vous vous inscrivez à AWS, vous fournissez une adresse de messagerie et un mot de passe qui sont associés à votre compte AWS. Il s'agit de vos informations d'identification racine et elles fournissent un accès complet à l'ensemble de vos ressources AWS. Important Pour des raisons de sécurité, nous vous conseillons d'utiliser les informations d'identification racine uniquement pour créer un utilisateur administrateur, qui est un utilisateur IAM disposant des autorisations complètes sur votre compte AWS. Vous pouvez ensuite utiliser cet utilisateur administrateur pour créer d'autres utilisateurs IAM et des rôles dotés d'autorisations limitées. Pour plus d'informations, consultez Bonnes pratiques IAM et Création d'un utilisateurs administrateur et d'un groupe dans le manuel IAM Guide de l'utilisateur. • Utilisateur IAM; – Un utilisateur IAM est simplement une identité au sein de votre compte AWS qui dispose d'autorisations personnalisées spécifiques (par exemple, des autorisations pour créer a lexicon dans Amazon Polly). Vous pouvez utiliser un nom utilisateur et un mot de passe IAM pour vous connecter aux pages Web AWS sécurisées telles que AWS Management Console, les forums de discussion AWS et le AWS Support Center. En plus de générer un nom utilisateur et un mot de passe, vous pouvez générer des clés d'accès pour chaque utilisateur. Vous pouvez utiliser ces clés lorsque vous accédez aux services AWS par 78 Amazon Polly Manuel du développeur Contrôle d'accès programmation, soit par le biais d'un kit SDK soit à l'aide d'AWS Command Line Interface (CLI). Les outils de l'interface de ligne de commande et les kits SDK utilisent les clés d'accès pour signer de façon cryptographique votre demande. Si vous n'utilisez pas les outils AWS, vous devez signer la demande vous-même. Amazon Polly prend en charge Signature Version 4, un protocole permettant l'authentification des demandes d'API entrantes. Pour plus d'informations sur l'authentification des demandes, consultez la rubrique Processus de signature Signature Version 4 dans la documentation AWS General Reference. • Rôle IAM – Un rôle IAM est une autre identité IAM que vous pouvez créer dans votre compte et qui dispose d'autorisations spécifiques. Le concept ressemble à celui d'utilisateur IAM, mais le rôle IAM n'est pas associé à une personne en particulier. Un rôle IAM vous permet d'obtenir des clés d'accès temporaires qui peuvent être utilisées pour accéder aux ressources et services AWS. Les rôles IAM avec des informations d'identification temporaires sont utiles dans les cas suivants : • Accès par des utilisateurs fédérés : au lieu de créer un utilisateur IAM, vous pouvez utiliser des identités d'utilisateur préexistantes provenant d'AWS Directory Service, de votre répertoire utilisateur d'entreprise ou d'un fournisseur d'identité web. Ces derniers sont appelés utilisateurs fédérés. AWS attribue un rôle à un utilisateur fédéré lorsque l'accès est demandé via un fournisseur d'identité. Pour plus d'informations sur les utilisateurs fédérés, consultez Utilisateurs fédérés et rôles dans le manuel IAM Guide de l'utilisateur. • Accès entre comptes : vous pouvez utiliser un rôle IAM de votre compte pour autoriser un autre compte AWS à accéder aux ressources de votre compte. Pour obtenir un exemple, consultez le Didacticiel : Déléguer l'accès entre des comptes AWS à l'aide de rôles IAM dans le manuel IAM Guide de l'utilisateur. • Accès au service AWS : vous pouvez utiliser un rôle IAM de votre compte pour autoriser un service AWS à accéder aux ressources de votre compte. Par exemple, vous pouvez créer un rôle qui permet à Amazon Redshift d'accéder à un compartiment Amazon S3 en votre nom, puis de charger les données stockées dans le compartiment dans un cluster Amazon Redshift. Pour plus d'informations, consultez Création d'un rôle pour déléguer des autorisations à un service AWS dans la documentation IAM Guide de l'utilisateur. • Applications qui s'exécutent sur Amazon EC2 : au lieu de stocker des clés d'accès au sein de l'instance EC2 afin qu'elles soient utilisées par les applications s'exécutant sur l'instance et d'émettre des demandes d'API AWS, vous pouvez utiliser un rôle IAM pour gérer des informations d'identification temporaires pour ces applications. Pour attribuer un rôle AWS à une instance EC2 et le rendre disponible pour toutes ses applications, vous pouvez créer un profil d'instance attaché à l'instance. Un profil d'instance contient le rôle et permet aux programmes qui s'exécutent sur l'instance EC2 d'obtenir des informations d'identification temporaires. Pour plus d'informations, consultez Utilisation de rôles pour des applications s'exécutant sur Amazon EC2 dans le manuel IAM Guide de l'utilisateur. Contrôle d'accès Vous pouvez disposer d'informations d'identification valides pour authentifier vos demandes, mais à moins d'avoir les autorisations requises, vous ne pouvez pas créer de ressources Amazon Polly 79 Amazon Polly Manuel du développeur Présentation de la gestion de l'accès ni accéder à de telles ressources. Par exemple, vous devez disposer d'autorisations pour créer une application Amazon Polly lexicon. Les sections suivantes expliquent comment gérer les autorisations pour Amazon Polly. Nous vous recommandons de commencer par lire la présentation. • Présentation de la gestion des autorisations d'accès à vos ressources Amazon Polly (p. 80) • Utilisation des stratégies basées sur l'identité (stratégies IAM) pour Amazon Polly (p. 83) • Autorisations d'API Amazon Polly : Référence des actions, des autorisations et des ressources (p. 88) Présentation de la gestion des autorisations d'accès à vos ressources Amazon Polly Chaque ressource AWS appartient à un compte AWS et les autorisations permettant de créer des ressources et d'y accéder sont régies par les stratégies d'autorisation. Un administrateur de compte peut attacher des stratégies d'autorisation aux identités IAM (c'est-à-dire aux utilisateurs, groupes et rôles), et certains services (tels que AWS Lambda) prennent également en charge l'attachement de stratégies d'autorisation aux ressources. Note Un administrateur de compte (ou utilisateur administrateur) est un utilisateur doté des privilèges d'administrateur. Pour plus d'informations, consultez Bonnes pratiques IAM dans le manuel IAM Guide de l'utilisateur. Lorsque vous accordez des autorisations, vous décidez qui doit les obtenir, à quelles ressources ces autorisations s'appliquent et les actions spécifiques que vous souhaitez autoriser sur ces ressources. Rubriques • Ressources et opérations Amazon Polly (p. 80) • Présentation de la propriété des ressources (p. 81) • Gestion de l'accès aux ressources (p. 81) • Spécification des éléments d'une stratégie : actions, effets et mandataires (p. 82) • Spécification des conditions dans une stratégie (p. 83) Ressources et opérations Amazon Polly Dans Amazon Polly, la ressource principale est a lexicon. Dans votre stratégie, vous utilisez un Amazon Resource Name (ARN) pour identifier la ressource à laquelle la stratégie s'applique. Ces ressources et sous-ressources ont un ARN (Amazon Resource Name) unique qui leur est associé, comme illustré dans le tableau suivant. Type de ressource Format ARN Lexique arn:aws:polly:region:account-id:lexicon/LexiconName Amazon Polly fournit un ensemble d'opérations à utiliser avec des ressources Amazon Polly. Pour obtenir une liste des opérations disponibles, consultez Amazon Polly Référence de l'API Amazon Polly (p. 60). 80 Amazon Polly Manuel du développeur Présentation de la propriété des ressources Présentation de la propriété des ressources Le compte AWS possède les ressources qui sont créés dans le compte, indépendamment de la personne qui a créé les ressources. Plus spécifiquement, le propriétaire des ressources est le compte AWS de l'entité principale (à savoir, le compte racine, un utilisateur IAM ou un rôle IAM) qui authentifie la demande de création des ressources. Les exemples suivants illustrent comment cela fonctionne : • Si vous utilisez les informations d'identification du compte racine de votre compte AWS pour créer a lexicon, votre compte AWS est le propriétaire de la ressource (dans Amazon Polly, la ressource est a lexicon). • Si vous créez un utilisateur IAM dans votre compte AWS et autorisez cet utilisateur à créer a lexicon il peut créer a lexicon. Toutefois, votre compte AWS, auquel l'utilisateur appartient, détient la ressource lexicon. • Si vous créez un rôle IAM dans votre compte AWS avec des autorisations pour créer a lexicon, quiconque capable d'assumer le rôle peut créer a lexicon. Votre compte AWS, auquel l'utilisateur appartient, détient la ressource lexicon. Gestion de l'accès aux ressources Une stratégie d'autorisation décrit qui a accès à quoi. La section suivante explique les options disponibles pour créer des stratégies d'autorisation. Note Cette section décrit l'utilisation d'IAM dans le contexte de Amazon Polly. Elle ne fournit pas d'informations détaillées sur le service IAM. Pour accéder à la documentation complète d'IAM, consultez Qu'est-ce qu'IAM ? du manuel IAM Guide de l'utilisateur. Pour plus d'informations sur la syntaxe et les descriptions des stratégies IAM, consultez Référence de stratégie AWS IAM dans le manuel IAM Guide de l'utilisateur. Les stratégies attachées à une identité IAM sont qualifiées de stratégies basées sur une entité (stratégies IAM) et les stratégies attachées à une ressource sont qualifiées de stratégies basées sur une ressource. Amazon Polly prend uniquement en charge les stratégies basées sur une identité. Rubriques • Stratégies basées sur une identité (stratégies IAM) (p. 81) • Stratégies basées sur une ressource (p. 82) Stratégies basées sur une identité (stratégies IAM) Vous pouvez attacher des stratégies à des identités IAM. Par exemple, vous pouvez effectuer les opérations suivantes : • Lier une stratégie d'autorisations à un utilisateur ou à un groupe de votre compte – pour accorder à un utilisateur l'autorisation relative à la création d'une ressource Amazon Polly, comme a lexicon, vous pouvez lier une stratégie d'autorisations à un utilisateur ou à un groupe auquel l'utilisateur appartient. • Attacher une stratégie d'autorisation à un rôle (accorder des autorisations entre comptes) – Vous pouvez attacher une stratégie d'autorisation basée sur une identité à un rôle IAM pour accorder des autorisations entre comptes. Par exemple, l'administrateur dans le compte A peut créer un rôle pour accorder des autorisations entre comptes à un autre compte AWS (par exemple, le compte B) ou à un service AWS comme suit : 1. L'administrateur du compte A crée un rôle IAM et lie une stratégie d'autorisation au rôle qui accorde des autorisations sur les ressources dans le compte A. 81 Amazon Polly Manuel du développeur Spécification des éléments d'une stratégie : actions, effets et mandataires 2. L'administrateur du compte A lie une stratégie d'approbation au rôle identifiant le compte B comme mandataire pouvant assumer ce rôle. 3. L'administrateur du compte B peut alors déléguer des autorisations pour assumer le rôle à tous les utilisateurs figurant dans le compte B. Les utilisateurs du compte B sont ainsi autorisés à créer des ressources ou à y accéder dans le compte A. Le mandataire dans la stratégie d'approbation peut également être un mandataire de service AWS si vous souhaitez accorder à un service AWS des autorisations pour assumer ce rôle. Pour plus d'informations sur l'utilisation d'IAM pour déléguer des autorisations, consultez Gestion de l'accès dans le manuel IAM Guide de l'utilisateur. Voici un exemple de stratégie qui accorde des autorisations pour ajouter et obtenir des lexiques, et pour indiquer la liste des lexiques actuellement disponibles. Amazon Polly prend en charge des stratégies basées sur une identité pour des actions au niveau des ressources. Par conséquent, la valeur Resource est indiquée par l'ARN. A titre d'exemple, arn:aws:polly:us-east-1:account-id:lexicon/* en tant que valeur Resource indique les autorisations sur tous les lexiques détenus au sein de la région us-east-1. { "Version": "2012-10-17", "Statement": [{ "Sid": "AllowPut-Get-ListActions", "Effect": "Allow", "Action": [ "polly:PutLexicon", "polly:GetLexicon", "polly:ListLexicons"], "Resource": "arn:aws:polly:us-east-1:account-id:lexicon/*" } ] } Pour plus d'informations sur l'utilisation des stratégies basées sur une identité avec Amazon Polly, consultez Utilisation des stratégies basées sur l'identité (stratégies IAM) pour Amazon Polly (p. 83). Pour plus d'informations sur les utilisateurs, les groupes, les rôles et les autorisations, consultez Identités (utilisateurs, groupes et rôles) dans le manuel IAM Guide de l'utilisateur. Stratégies basées sur une ressource D'autres services, tels que Amazon S3, prennent également en charge les stratégies d'autorisation basées sur une ressource. Par exemple, vous pouvez attacher une stratégie à un compartiment S3 pour gérer les autorisations d'accès à ce compartiment. Amazon Polly ne prend pas en charge les stratégies basées sur les ressources. Spécification des éléments d'une stratégie : actions, effets et mandataires Pour chaque ressource Amazon Polly, le service définit un ensemble d'opérations d'API. Pour accorder des autorisations pour ces opérations d'API, Amazon Polly définit un ensemble d'actions que vous pouvez spécifier dans une stratégie. Certaines opérations d'API peuvent exiger des autorisations pour plusieurs actions afin de réaliser l'opération d'API. Pour plus d'informations sur les ressources et les opérations de l'API, consultez Ressources et opérations Amazon Polly (p. 80) et Référence de l'API Amazon Polly (p. 60). 82 Amazon Polly Manuel du développeur Spécification des conditions dans une stratégie Voici les éléments les plus élémentaires d'une stratégie : • Ressource – Un Amazon Resource Name (ARN) identifie la ressource à laquelle la stratégie basée sur une identité s'applique. Pour plus d'informations, consultez Ressources et opérations Amazon Polly (p. 80). • Action – Vous utilisez des mots clés d'action pour identifier les opérations de ressource que vous voulez accorder ou refuser. Par exemple, vous pouvez utiliser polly:PutLexicon pour ajouter un lexique à la région. • Effet – Vous spécifiez l'effet produit, soit un accord ou un refus, lorsque l'utilisateur demande l'action spécifique. Si vous n'accordez pas explicitement l'accès pour (autoriser) une ressource, l'accès est implicitement refusé. Vous pouvez aussi explicitement refuser l'accès à une ressource, ce que vous pouvez faire afin de vous assurer qu'un utilisateur n'y a pas accès, même si une stratégie différente accorde l'accès. • Mandataire – Dans les stratégies basées sur une identité (stratégies IAM), l'utilisateur auquel la stratégie est attachée est le mandataire implicite. Pour les stratégies basées sur une ressource, vous spécifiez l'utilisateur, le compte, le service ou une autre entité qui doit recevoir les autorisations (s'applique uniquement aux stratégies basées sur une ressource). Amazon Polly ne prend pas en charge les stratégies basées sur les ressources. Pour plus d'informations sur la syntaxe des stratégies IAM et pour obtenir des descriptions, consultez Référence de stratégie AWS IAM dans le manuel IAM Guide de l'utilisateur. Pour obtenir une des tableaux présentant toutes les opérations API d' Amazon Polly ainsi que les ressources auxquelles elles s'appliquent, consultez Autorisations d'API Amazon Polly : Référence des actions, des autorisations et des ressources (p. 88). Spécification des conditions dans une stratégie Lorsque vous accordez des autorisations, vous pouvez utiliser le langage d'access policy pour spécifier les conditions définissant quand une stratégie doit prendre effet. Par exemple, il est possible d'appliquer une stratégie après seulement une date spécifique. Pour plus d'informations sur la spécification de conditions dans un langage de stratégie, consultez Condition dans le manuel IAM Guide de l'utilisateur. Pour exprimer des conditions, vous utilisez des clés de condition prédéfinies. Il n'existe pas de clés de condition spécifiques à Amazon Polly. Il existe toutefois des clés de condition à l'échelle d'AWS que vous pouvez utiliser selon vos besoins. Pour une liste complète des clés à l'échelle d'AWS, consultez Clés disponibles pour les conditions dans le IAM Guide de l'utilisateur. Utilisation des stratégies basées sur l'identité (stratégies IAM) pour Amazon Polly Cette rubrique fournit des exemples de stratégies basées sur l'identité qui montrent comment un administrateur de compte peut attacher des stratégies d'autorisation à des identités IAM (autrement dit, des utilisateurs, groupes et rôles) et ainsi accorder des autorisations pour effectuer des opérations sur les ressources Amazon Polly. Important Nous vous recommandons, tout d'abord, d'examiner les rubriques de présentation qui détaillent les concepts de base et les options disponibles pour gérer l'accès à vos ressources Amazon Polly. Pour plus d'informations, consultez Présentation de la gestion des autorisations d'accès à vos ressources Amazon Polly (p. 80). Rubriques 83 Amazon Polly Manuel du développeur Autorisations requises pour utiliser la console Amazon Polly • Autorisations requises pour utiliser la console Amazon Polly (p. 84) • Stratégies gérées par AWS (stratégies prédéfinies) pour Amazon Polly (p. 85) • Exemples de stratégies gérées par le client (p. 85) Un exemple de stratégie d'autorisation est exposé ci-dessous. { "Version": "2012-10-17", "Statement": [{ "Sid": "AllowGet-Delete-ListActions", "Effect": "Allow", "Action": [ "polly:GetLexicon", "polly:DeleteLexicon", "polly:ListLexicons"], "Resource": "*" } ], "Statement": [{ "Sid": "NoOverrideMyLexicons", "Effect": "Deny", "Action": [ "polly:PutLexicon"], "Resource": "arn:aws:polly:us-east-1:123456789012:lexicon/my*" } ] } La stratégie possède deux énoncés: • La première instruction accorde l'autorisation d'effectuer les trois actions Polly (polly:GetLexicon, polly:DeleteLexicon et polly:ListLexicons) dans n'importe quel lexique. L'utilisation du caractère générique (*) en tant que ressource accorde des autorisations universelles pour ces actions sur toutes les régions et tous les lexiques détenus par ce compte. • La deuxième instruction refuse explicitement l'autorisation d'effectuer une action Polly (polly:PutLexicon). L'ARN affiché comme étant la ressource applique spécifiquement cette autorisation à tous les lexiques commençant par les lettres « my » qui se trouvent dans la région us-east-1. Pour visualiser un tableau répertoriant toutes les opérations d'API Amazon Polly et les ressources auxquelles elles s'appliquent, consultez Autorisations d'API Amazon Polly : Référence des actions, des autorisations et des ressources (p. 88). Autorisations requises pour utiliser la console Amazon Polly Pour qu'un utilisateur puisse utiliser la console Amazon Polly, il doit disposer d'un ensemble minimal d'autorisations pour pouvoir décrire les ressources Amazon Polly de son compte AWS. Si vous créez une stratégie IAM plus restrictive que les autorisations minimales requises, la console ne fonctionnera pas comme prévu pour les utilisateurs dotés de cette stratégie IAM. Vous n'avez pas besoin d'accorder des autorisations de console minimales aux utilisateurs qui effectuent des appels uniquement à l'AWS CLI ou à l'API Amazon Polly. 84 Amazon Polly Manuel du développeur Stratégies gérées par AWS (stratégies prédéfinies) pour Amazon Polly Pour utiliser la console Amazon Polly, vous devez accorder des autorisations à toutes les API Amazon Polly. Aucune autorisation supplémentaire n'est nécessaire. La stratégie d'autorisations suivante permet, à elle seule, d'utiliser la console Amazon Polly. } "Version": "2012-10-17", "Statement": [{ "Sid": "Console-AllowAllPollyActions", "Effect": "Allow", "Action": [ "polly:*"], "Resource": "*" } ] } Stratégies gérées par AWS (stratégies prédéfinies) pour Amazon Polly AWS est approprié pour de nombreux cas d'utilisation courants et fournit des stratégies IAM autonomes qui sont créées et administrées par AWS. Ces stratégies gérées AWS octroient les autorisations requises dans les cas d'utilisation courants pour que vous évitiez d'avoir à réfléchir aux autorisations qui sont requises. Pour plus d'informations, consultez Stratégies gérées par AWS dans le manuel IAM Guide de l'utilisateur. Les stratégies gérées par AWS suivantes, que vous pouvez attacher aux utilisateurs de votre compte, sont propres à Amazon Polly : • AmazonPollyReadOnlyAccess - Permet d'accéder aux ressources en lecture seule, ainsi que de faire une liste de léxiques, d'extraire des léxiques, de faire une liste de voix disponibles et de synthétiser celles-ci (y compris, d'appliquer des léxiques aux voix synthétisées). • AmazonPollyFullAccess - Permet un accès total aux ressources ainsi qu'à toutes les opérations prises en charge. Note Vous pouvez consulter ces stratégies d'autorisations en vous connectant à la console IAM et en y recherchant des stratégies spécifiques. Vous pouvez également créer vos propres stratégies IAM personnalisées afin d'accorder des autorisations pour les actions et les ressources Amazon Polly. Vous pouvez attacher ces stratégies personnalisées aux utilisateurs ou groupes IAM qui nécessitent ces autorisations. Exemples de stratégies gérées par le client Dans cette section, vous trouverez des exemples de stratégies utilisateur qui accordent des autorisations pour diverses actions Amazon Polly. Ces stratégies fonctionnent lorsque vous utilisez les kits SDK AWS ou l'AWS CLI. Lorsque vous utilisez la console, vous devez accorder des autorisations à toutes les API Amazon Polly. Cela est indiqué dans Autorisations requises pour utiliser la console Amazon Polly (p. 84). Note Tous les exemples utilisent la région us-east-1 et ils contiennent des ID de comptes fictifs. Exemples • Exemple 1 : Autoriser toutes les actions Amazon Polly (p. 86) 85 Amazon Polly Manuel du développeur Exemples de stratégies gérées par le client • Exemple 2 : Autoriser toutes les actions Polly à l'exception de DeleteLexicon (p. 86) • Exemple 3 : Autoriser DeleteLexicon (p. 87) • Exemple 4 : Autoriser la suppression de lexique dans une région donnée (p. 87) • Exemple 5 : Autoriser DeleteLexicon pour un lexique donné (p. 87) Exemple 1 : Autoriser toutes les actions Amazon Polly Une fois que vous êtes inscrit (voir Étape 1.1 : S'inscrire à AWS (p. 5)) vous créez un utilisateur administrateur pour gérer votre compte, y compris pour créer des utilisateurs et gérer leurs autorisations. Vous pouvez choisir de créer un utilisateur qui dispose des autorisations pour toutes les actions Amazon Polly (définissez cet utilisateur en tant qu'administrateur spécifique au service) pour utiliser Amazon Polly. Vous pouvez alors lier la stratégie d'autorisations suivante à cet utilisateur. { "Version": "2012-10-17", "Statement": [{ "Sid": "AllowAllPollyActions", "Effect": "Allow", "Action": [ "polly:*"], "Resource": "*" } ] } Exemple 2 : Autoriser toutes les actions Polly à l'exception de DeleteLexicon La stratégie d'autorisations suivante accorde à l'utilisateur les autorisations lui permettant d'exécuter toutes les actions à l'exception de DeleteLexicon. Les autorisations de suppression sont refusées dans toutes les régions. { "Version": "2012-10-17", "Statement": [{ "Sid": "AllowAllActions-DenyDelete", "Effect": "Allow", "Action": [ "polly:DescribeVoices", "polly:GetLexicon", "polly:PutLexicon", "polly:SynthesizeSpeech", "polly:ListLexicons"], "Resource": "*" } { "Sid": "DenyDeleteLexicon", "Effect": "Deny", "Action": [ "polly:DeleteLexicon"], "Resource": "*" } 86 Amazon Polly Manuel du développeur Exemples de stratégies gérées par le client ] } Exemple 3 : Autoriser DeleteLexicon La stratégie d'autorisations suivante accorde à l'utilisateur les autorisations pour supprimer tout lexique qu'il détient, quel que soit le projet ou la région dans lequel il se trouve. { "Version": "2012-10-17", "Statement": [{ "Sid": "AllowDeleteLexicon", "Effect": "Allow", "Action": [ "polly:DeleteLexicon"], "Resource": "*" } ] } Exemple 4 : Autoriser la suppression de lexique dans une région donnée La stratégie d'autorisations suivante accorde à l'utilisateur des autorisations pour supprimer n'importe quel lexique dans n'importe quel projet qu'il détient dans une même région (dans ce cas, us-east-1). { "Version": "2012-10-17", "Statement": [{ "Sid": "AllowDeleteSpecifiedRegion", "Effect": "Allow", "Action": [ "polly:DeleteLexicon"], "Resource": "arn:aws:polly:us-east-1:123456789012:lexicon/*" } ] } Exemple 5 : Autoriser DeleteLexicon pour un lexique donné La stratégie d'autorisations suivante accorde à l'utilisateur des autorisations pour supprimer un lexique spécifique qu'il détient (dans ce cas, myLexicon) dans une région spécifique (dans ce cas, us-east-1). { "Version": "2012-10-17", "Statement": [{ "Sid": "AllowDeleteForSpecifiedLexicon", "Effect": "Allow", "Action": [ "polly:DeleteLexicon"], "Resource": "arn:aws:polly:us-east-1:123456789012:lexicon/myLexicon" } ] } 87 Amazon Polly Manuel du développeur Référence des autorisations de l'API Amazon Polly Autorisations d'API Amazon Polly : Référence des actions, des autorisations et des ressources Lorsque vous configurez Contrôle d'accès (p. 79) et que vous créez une stratégie d'autorisation que vous pouvez attacher à une identité IAM (stratégies basées sur une identité), vous pouvez utiliser la de tableaux ci-dessous comme référence. Le La liste inclut chaque opération API Amazon Polly, les actions correspondantes pour lesquelles vous pouvez accorder des autorisations d'exécution de l'action et la ressource AWS pour laquelle vous pouvez accorder des autorisations. Vous spécifiez les actions dans le champ Action de la stratégie ainsi que la valeur des ressources dans le champ Resource de la stratégie. Pour exprimer des conditions, vous pouvez utiliser des clés de condition au niveau d'AWS dans les stratégies Amazon Polly. Pour obtenir la liste complète des clés à l'échelle d'AWS, consultez Clés disponibles dans le manuel IAM Guide de l'utilisateur. Note Pour spécifier une action, utilisez le préfixe polly suivi du nom de l'opération d'API (par exemple, polly:GetLexicon). Amazon Polly prend en charge des stratégies basées sur une identité pour des actions au niveau des ressources. Par conséquent, la valeur Resource est indiquée par l'ARN. A titre d'exemple, arn:aws:polly:us-east-1:account-id:lexicon/* en tant que valeur Resource indique les autorisations sur tous les lexiques détenus au sein de la région us-east-1. Étant donné que Amazon Polly ne prend pas en charge les autorisations pour des actions au niveau des ressources, la plupart des stratégies indiquent un caractère générique (*) comme valeur Resource. Toutefois, s'il est nécessaire de limiter les autorisations à une région spécifique, ce caractère générique est remplacé par l'ARN approprié : arn:aws:polly:region:accountid:lexicon/*. API Amazon Polly et autorisations requises pour les actions Opération d'API : DeleteLexicon (p. 61) Autorisations requises (Action d'API) :polly:DeleteLexicon Ressources : arn:aws:polly:region:account-id:lexicon/LexiconName Opération API : DescribeVoices (p. 63) Autorisations requises (Action d'API) :polly:DescribeVoices Ressources : arn:aws:polly:region:account-id:lexicon/voice-name Opération API : GetLexicon (p. 65) Autorisations requises (Action d'API) :polly:GetLexicon Ressources : arn:aws:polly:region:account-id:lexicon/voice-name Opération API : ListLexicons (p. 67) Autorisations requises (Action d'API) :polly:ListLexicons Ressources : arn:aws:polly:region:account-id:lexicon/* Opération API : PutLexicon (p. 69) Autorisations requises (Action d'API) :polly:ListLexicons Ressources : * Opération API : SynthesizeSpeech (p. 71) Autorisations requises (Action d'API) :polly:SynthesizeSpeech 88 Amazon Polly Manuel du développeur Référence des autorisations de l'API Amazon Polly Ressources : * 89 Amazon Polly Manuel du développeur Historique du document d'Amazon Polly Le tableau suivant décrit la documentation de cette version d'Amazon Polly. • Dernière date de mise à jour de la documentation : 30 novembre 2016 Modification Description Date Nouveau guide et service C'est la première version du service AWS de synthèse vocale, Amazon Polly et du manuel du développeur Amazon Polly. 30 novembre 2016 90 Amazon Polly Manuel du développeur Glossaire AWS Pour la terminologie AWS la plus récente, consultez le Glossaire AWS dans le document AWS General Reference. 91