Especificar um endpoint regional

A Speech-to-Text oferece endpoints de API regionais dos EUA e da UE. Se você usar um endpoint regional, os dados em repouso e em uso vão permanecer dentro dos limites continentais da Europa ou dos EUA. Especificar um endpoint é importante se o local dos dados precisar ser controlado para cumprir os requisitos regulamentares locais. Não há alteração funcional no comportamento da API.

Ao usar um endpoint regional, inclua o local us ou eu correspondente na string parent. Consulte a documentação RecognitionConfig para mais informações sobre como configurar o corpo da solicitação de reconhecimento.

Protocolo

Para realizar o reconhecimento de fala usando um endpoint regional, execute o comando aplicável na tabela abaixo para configurar o endpoint correto:

Multirregional Modificação do endpoint
UE $ export CLOUD_SPEECH_ENDPOINT=https://eu-speech.googleapis.com
EUA $ export CLOUD_SPEECH_ENDPOINT=https://us-speech.googleapis.com

O exemplo de código a seguir demonstra como enviar um recognize request que mantém todos os dados restritos a uma região específica. É possível substituir o endpoint regional EU ou US pela variável CLOUD_SPEECH_ENDPOINT.


$ curl   -H "Content-Type: application/json"  \
         -H  "Authorization: Bearer "$(gcloud auth print-access-token)   \
          $CLOUD_SPEECH_ENDPOINT/v1/speech:recognize \
         --data "{
        'config': {
            'encoding': 'LINEAR16',
            'languageCode': 'en-US'
        },
        'audio': {
            'uri':'gs://speech-samples-00/commercial_mono.wav'
        }
    }"

Esse exemplo usa a CLI do Google Cloud para gerar credenciais para sua conta de usuário. Para saber como instalar e inicializar a gcloud CLI, consulte o guia de início rápido.

O conteúdo de áudio fornecido no corpo da solicitação está codificado em base64. Para mais informações sobre como codificar áudio em base64, consulte Como codificar conteúdo de áudio em Base64. Para mais informações sobre o campo content, consulte RecognitionAudio.

gcloud

Os comandos a seguir definem um endpoint regional:

Multirregional Modificação do endpoint
UE gcloud config set api_endpoint_overrides/speech https://eu-speech.googleapis.com/
EUA gcloud config set api_endpoint_overrides/speech https://us-speech.googleapis.com/

Depois de definir o endpoint regional, todos os dados serão limitados à região especificada quando você enviar recognize requests subsequente. O exemplo a seguir demonstra uma solicitação de reconhecimento.

$ gcloud ml speech recognize gs://cloud-samples-tests/speech/brooklyn.flac \
    --language-code=en-US --log-http

Python

Para aprender a instalar e usar a biblioteca de cliente da Speech-to-Text, consulte Bibliotecas de cliente da Speech-to-Text. Para mais informações, consulte a documentação de referência da API Speech-to-Text Python.

Para autenticar no Speech-to-Text, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.


# Imports the Google Cloud client library
from google.api_core import client_options
from google.cloud import speech

def sync_recognize_with_multi_region_gcs() -> speech.RecognizeResponse:
    """Recognizes speech synchronously in the GCS bucket."""

    # Instantiates a client

    # Pass an additional argument, ClientOptions, to specify the new endpoint.
    _client_options = client_options.ClientOptions(
        api_endpoint="eu-speech.googleapis.com"
    )

    client = speech.SpeechClient(client_options=_client_options)

    # The name of the audio file to transcribe
    gcs_uri = "gs://cloud-samples-data/speech/brooklyn_bridge.raw"

    audio = speech.RecognitionAudio(uri=gcs_uri)

    config = speech.RecognitionConfig(
        encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,
        sample_rate_hertz=16000,
        language_code="en-US",
    )

    # Detects speech in the audio file
    response = client.recognize(config=config, audio=audio)

    for result in response.results:
        print(f"Transcript: {result.alternatives[0].transcript}")

    return response.results