Esta página demonstra como transcrever um ou mais arquivos de áudio longos
de maneira assíncrona. O Recognize
impõe um limite de duração de áudio de um minuto. Portanto, para
arquivos mais longos, use BatchRecognize
.
O reconhecimento de fala em lote retorna um google.longrunning.Operation
que
pode ser consultado para saber quando a transcrição dos seus arquivos foi concluída.
As transcrições são gravadas em um bucket do Google Cloud Storage especificado por você.
Fazer reconhecimento de fala em lote
Para que a Speech-to-Text acesse seus arquivos no Google Cloud Storage, crie uma conta de serviço para a Speech-to-Text e conceda a ela acesso de leitura ao objeto de armazenamento relevante. Para criar uma conta de serviço no Cloud Shell, execute o comando a seguir e crie a conta, se ela não existir, e exiba-a.
Configuração de BatchRecognizeRequest
O BatchRecognize
usa o reconhecedor
especificado para executar o reconhecimento. Portanto, os parâmetros de decodificação são a única configuração que você precisa fornecer, explicitamente ou escolhendo a decodificação automática.
Confira um exemplo de solicitação BatchRecognize:
POST /v2/projects/<PROJECT-ID>/locations/<LOCATION>/recognizers/<RECOGNIZER-ID>:batchRecognize
{
'config': {
'autoDecodingConfig': {}
},
'files': [
{
'uri': "gs://my-audio-bucket/en-us/cheese.wav"
}
],
'recognitionOutputConfig': {
'gcsOutputConfig': {
'uri': "gs://my-transcripts-bucket/en-us"
}
}
}
Substituições no nível de solicitação
Além do idioma e do modelo, o reconhecedor também inclui uma lista de parâmetros de reconhecimento (como enable_automatic_punctuation
e outras opções).
Há parâmetros que podem ser substituídos no nível da solicitação, para sua conveniência, para que você não precise criar um reconhecedor diferente para cada combinação de recursos de reconhecimento que quiser.
Supondo que um reconhecedor foi criado como acima:
POST /v2/projects/<PROJECT-ID>/locations/<LOCATION>/recognizers?recognizer_id=<RECOGNIZER-ID>
{
'languageCodes': 'en-US',
'model': 'latest_long',
'config': {
'features': {
'enableAutomaticPunctuation': true
'enableWordTimeOffsets': true
}
}
}
É assim que os recursos são substituídos no nível da solicitação. Isso significa que o reconhecimento de cada arquivo terá esses recursos aplicados a ele.
POST /v2/projects/<PROJECT-ID>/locations/<LOCATION>/recognizers/<RECOGNIZER-ID>:batchRecognize
{
'config': {
'autoDecodingConfig': {}
'features': {
'enableAutomaticPunctuation': false
}
},
'files': [
{
'uri': "gs://my-audio-bucket/en-us/cheese.wav"
}
],
'recognitionOutputConfig': {
'gcsOutputConfig': {
'uri': "gs://my-transcripts-bucket/en-us"
}
}
}
Isso vai executar o ASR em gs://my-audio-bucket/en-us/cheese.wav
com apenas
o recurso de reconhecimento enableWordTimeOffsets
ativado, porque foi ativado
no nível do reconhecedor e não especificado no nível da solicitação. Como
enableAutomaticPunctuation
foi especificado como falso no nível da solicitação,
ele vai substituir o valor original do conjunto verdadeiro no nível do reconhecedor, e essa
solicitação não vai realizar a pontuação automática.
Substituições no nível de arquivo
Essa mesma situação pode acontecer no arquivo, permitindo máxima flexibilidade para definir os recursos de reconhecimento por arquivo. Por exemplo, talvez você queira que todos os arquivos tenham pontuação automática, mas tenham ajustes de tempo de palavras apenas em arquivos específicos.
Você pode criar seu reconhecedor como acima. Além de especificar uma solicitação, desta forma:
POST /v2/projects/<PROJECT-ID>/locations/<LOCATION>/recognizers/<RECOGNIZER-ID>:batchRecognize
{
# This specifies that all files will use automatic decoding
'config': {
'autoDecodingConfig': {}
},
'files': [
{
'uri': "gs://my-audio-bucket/en-us/cheese1.wav"
'config': {
# This file will not include word time offsets.
'features': {
'enableAutomaticPunctuation': false
}
},
},
{
'uri': "gs://my-audio-bucket/en-us/cheese2.wav"
'config': {
# This file will include word time offsets.
'features': {
'enableAutomaticPunctuation': true
}
},
},
]
'recognitionOutputConfig': {
'gcsOutputConfig': {
'uri': "gs://my-transcripts-bucket/en-us"
}
}
}
Processar uma resposta em BatchRecognize
BatchRecognize
retorna uma google.longrunning.Operation
como resposta.
Consulte a página Operações para saber como pesquisar uma operação.
O BatchRecognizeResponse
é definido após a conclusão e detalha por arquivo
o resultado, que é um URI do Cloud Storage para a transcrição ou uma mensagem de erro
descrevendo o que deu errado.
A resposta JSON será semelhante a esta:
'response': {
'@type': 'type.googleapis.com/google.cloud.speech.v2.BatchRecognizeResponse',
'results': {
# Input file name
'gs://my-audio-bucket/audio/en-us/cheese.wav': {
# Output (transcript) file name
'uri': 'gs://my-transcripts-bucket/en-us/cheese_transcript_63d14a9d-0000-2c31-b9b4-c82add6c82a4.json'
}
}
}
O arquivo de transcrição para BatchRecognize é formatado como um objeto do tipo BatchRecognizeResults
.