text-to-speech/extension.yaml (138 lines of code) (raw):

# Copyright 2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. name: text-to-speech version: 0.1.6 specVersion: v1beta icon: icon.png tags: [ ai, text-to-speech, speech-synthesis, google-ai, voice-generation, speech-generation, ] displayName: Convert Text to Speech description: Converts Firestore documents to audio files stored in Cloud Storage using Cloud Text to Speech. license: Apache-2.0 sourceUrl: https://github.com/GoogleCloudPlatform/firebase-extensions/tree/main/text-to-speech releaseNotesUrl: https://github.com/GoogleCloudPlatform/firebase-extensions/blob/main/text-to-speech/CHANGELOG.md author: authorName: Google Cloud url: https://cloud.google.com/ contributors: - authorName: Invertase email: oss@invertase.io url: https://github.com/invertase billingRequired: true apis: - apiName: texttospeech.googleapis.com reason: To use Google Text to Speech to generate natural sounding speech from your strings in Firestore. roles: - role: datastore.user reason: Allows the extension to write translated strings to Cloud Firestore. - role: storage.objectAdmin reason: Allows the extension to write translated strings to Cloud Storage. resources: - name: textToSpeech type: firebaseextensions.v1beta.function description: Processes document changes in the specified Cloud Firestore collection, writing synthesized natural speech files to Cloud Storage properties: location: ${param:LOCATION} runtime: nodejs20 eventTrigger: eventType: providers/cloud.firestore/eventTypes/document.write resource: projects/${param:PROJECT_ID}/databases/(default)/documents/${param:COLLECTION_PATH}/{id} params: - param: LOCATION label: Cloud Functions location description: >- Where do you want to deploy the functions created for this extension? You usually want a location close to your database. For help selecting a location, refer to the [location selection guide](https://firebase.google.com/docs/functions/locations). type: select options: - label: Iowa (us-central1) value: us-central1 - label: South Carolina (us-east1) value: us-east1 - label: Northern Virginia (us-east4) value: us-east4 - label: Los Angeles (us-west2) value: us-west2 - label: Salt Lake City (us-west3) value: us-west3 - label: Las Vegas (us-west4) value: us-west4 - label: Warsaw (europe-central2) value: europe-central2 - label: Belgium (europe-west1) value: europe-west1 - label: London (europe-west2) value: europe-west2 - label: Frankfurt (europe-west3) value: europe-west3 - label: Zurich (europe-west6) value: europe-west6 - label: Taiwan (asia-east1) value: asia-east1 - label: Hong Kong (asia-east2) value: asia-east2 - label: Tokyo (asia-northeast1) value: asia-northeast1 - label: Osaka (asia-northeast2) value: asia-northeast2 - label: Seoul (asia-northeast3) value: asia-northeast3 - label: Mumbai (asia-south1) value: asia-south1 - label: Singapore (asia-southeast1) value: asia-southeast1 - label: Jakarta (asia-southeast2) value: asia-southeast2 - label: Montreal (northamerica-northeast1) value: northamerica-northeast1 - label: Sao Paulo (southamerica-east1) value: southamerica-east1 - label: Sydney (australia-southeast1) value: australia-southeast1 default: us-central1 required: true immutable: true - param: COLLECTION_PATH label: Collection path description: > What collection path contains documents with text you want to convert? example: docs_to_convert validationRegex: '^[^/]+(/[^/]+/[^/]+)*$' validationErrorMessage: Must be a valid Cloud Firestore Collection type: string required: true - param: BUCKET_NAME label: Bucket name description: > In which storage bucket do you want to keep converted text? type: selectResource resourceType: storage.googleapis.com/Bucket example: my-project-12345.appspot.com validationRegex: ^([0-9a-z_.-]*)$ validationErrorMessage: Invalid storage bucket default: ${STORAGE_BUCKET} required: true - param: STORAGE_PATH label: Storage path description: > What is the location in your storage bucket you would like to keep converted audio? By default this will be the root of the bucket. type: string required: false - param: ENABLE_SSML label: Enable ssml description: >- If set to \"Yes\", text processed by this extension will be assumed to be written in ssml. type: select options: - label: Yes value: yes - label: No value: no default: no required: true - param: LANGUAGE_CODE label: Language code description: >- What language code do you want to use? type: select options: - label: Afrikaans (South Africa) value: af-ZA - label: Arabic value: ar-XA - label: Basque (Spain) value: eu-ES - label: Bengali (India) value: bn-IN - label: Bulgarian (Bulgaria) value: bg-BG - label: Catalan (Spain) value: ca-ES - label: Chinese (Hong Kong) value: yue-HK - label: Czech (Czech Republic) value: cs-CZ - label: Danish (Denmark) value: da-DK - label: Dutch (Belgium) value: nl-BE - label: Dutch (Netherlands) value: nl-NL - label: English (Australia) value: en-AU - label: English (India) value: en-IN - label: English (UK) value: en-GB - label: English (US) value: en-US - label: Filipino (Philippines) value: fil-PH - label: Finnish (Finland) value: fi-FI - label: French (Canada) value: fr-CA - label: French (France) value: fr-FR - label: Galician (Spain) value: gl-ES - label: German (Germany) value: de-DE - label: Greek (Greece) value: el-GR - label: Gujarati (India) value: gu-IN - label: Hebrew (Israel) value: he-IL - label: Hindi (India) value: hi-IN - label: Hungarian (Hungary) value: hu-HU - label: Icelandic (Iceland) value: is-IS - label: Indonesian (Indonesia) value: id-ID - label: Italian (Italy) value: it-IT - label: Japanese (Japan) value: ja-JP - label: Kannada (India) value: kn-IN - label: Korean (South Korea) value: ko-KR - label: Latvian (Latvia) value: lv-LV - label: Lithuanian (Lithuania) value: lt-LT - label: Malay (Malaysia) value: ms-MY - label: Malayalam (India) value: ml-IN - label: Mandarin Chinese value: cmn-CN - label: Mandarin Chinese TW value: cmn-TW - label: Marathi (India) value: mr-IN - label: Norwegian (Norway) value: nb-NO - label: Polish (Poland) value: pl-PL - label: Portuguese (Brazil) value: pt-BR - label: Portuguese (Portugal) value: pt-PT - label: Punjabi (India) value: pa-IN - label: Romanian (Romania) value: ro-RO - label: Russian (Russia) value: ru-RU - label: Serbian (Cyrillic) value: sr-RS - label: Slovak (Slovakia) value: sk-SK - label: Spanish (Spain) value: es-ES - label: Spanish (US) value: es-US - label: Swedish (Sweden) value: sv-SE - label: Tamil (India) value: ta-IN - label: Telugu (India) value: te-IN - label: Thai (Thailand) value: th-TH - label: Turkish (Turkey) value: tr-TR - label: Ukrainian (Ukraine) value: uk-UA - label: Vietnamese (Vietnam) value: vi-VN default: en-US required: false - param: VOICE_TYPE label: Voice type description: >- What voice type do you want to use? type: select options: - label: Standard value: Standard - label: WaveNet value: WaveNet - label: Neural2 value: Neural2 - label: Studio value: Studio default: Standard - param: SSML_GENDER label: SSML Gender description: >- What SSML Gender do you want to use? type: select options: - label: Female value: FEMALE - label: Male value: MALE default: FEMALE required: true - param: AUDIO_ENCODING label: Audio Encoding description: >- What audio encoding do you want to use? type: select options: - label: LINEAR16 value: LINEAR16 - label: MP3 value: MP3 - label: OGG_OPUS value: OGG_OPUS - label: MULAW value: MULAW - label: ALAW value: ALAW default: MP3 required: true - param: ENABLE_PER_DOCUMENT_OVERRIDES label: Enable per document overrides. description: >- If set to \"Yes\", options for converting audio will be overwritten by fields in the document containing the text to be converted. type: select options: - label: Yes value: yes - label: No value: no default: no required: true - param: VOICE_NAME label: Voice name description: > Alternatively you may specify a voice name, this will override other extension conversion parameters (language code, SSML Gender, Voice type). type: string required: false