Criar uma transcrição em lote
Com transcrições em lote, você envia dados de áudio em lote. O serviço transcreve os dados de áudio e armazena os resultados em um recipiente de armazenamento. Em seguida, você pode recuperar os resultados do contêiner de armazenamento.
Importante
Novos preços estão em vigor para transcrição em lote que usa a API REST de fala para texto v3.2. Para obter mais informações, consulte o guia de preços.
Pré-requisitos
Você precisa de um recurso de fala padrão (S0). Recursos livres (F0) não são suportados.
Criar um trabalho de transcrição
Para criar um trabalho de transcrição em lote, use a operação Transcriptions_Create da API REST de fala para texto. Construa o corpo da solicitação de acordo com as seguintes instruções:
- Você deve definir a
contentContainerUrl
propriedade oucontentUrls
. Para obter mais informações sobre o armazenamento de blob do Azure para transcrição em lote, consulte Localizar arquivos de áudio para transcrição em lote. - Defina a propriedade necessária
locale
. Esse valor deve corresponder à localidade esperada dos dados de áudio a serem transcritos. Não é possível alterar a localidade mais tarde. - Defina a propriedade necessária
displayName
. Escolha um nome de transcrição ao qual possa fazer referência mais tarde. O nome da transcrição não precisa ser exclusivo e pode ser alterado posteriormente. - Opcionalmente, para usar um modelo diferente do modelo base, defina a
model
propriedade como a ID do modelo. Para obter mais informações, consulte Usar um modelo personalizado e Usar um modelo Whisper. - Opcionalmente, defina a
wordLevelTimestampsEnabled
propriedade comotrue
para habilitar carimbos de data/hora no nível da palavra nos resultados da transcrição. O valor predefinido éfalse
. Para modelos Whisper, defina adisplayFormWordLevelTimestampsEnabled
propriedade em vez disso. Whisper é um modelo somente de exibição, portanto, o campo lexical não é preenchido na transcrição. - Opcionalmente, defina a
languageIdentification
propriedade. A identificação de idioma é usada para identificar idiomas falados em áudio quando comparados com uma lista de idiomas suportados. Se você definir alanguageIdentification
propriedade, também deverá definirlanguageIdentification.candidateLocales
com localidades candidatas.
Para obter mais informações, consulte Opções de configuração de solicitação.
Faça uma solicitação HTTP POST que use o URI, conforme mostrado no exemplo de Transcriptions_Create a seguir.
- Substitua
YourSubscriptionKey
pela chave de recurso de fala. - Substitua
YourServiceRegion
pela região de recursos de Fala. - Defina as propriedades do corpo da solicitação conforme descrito anteriormente.
curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -H "Content-Type: application/json" -d '{
"contentUrls": [
"https://crbn.us/hello.wav",
"https://crbn.us/whatstheweatherlike.wav"
],
"locale": "en-US",
"displayName": "My Transcription",
"model": null,
"properties": {
"wordLevelTimestampsEnabled": true,
"languageIdentification": {
"candidateLocales": [
"en-US", "de-DE", "es-ES"
],
}
},
}' "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions"
Deverá receber um corpo de resposta no seguinte formato:
{
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/db474955-ab85-4c6c-ba6e-3bfe63d041ba",
"model": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/5988d691-0893-472c-851e-8e36a0fe7aaf"
},
"links": {
"files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/db474955-ab85-4c6c-ba6e-3bfe63d041ba/files"
},
"properties": {
"diarizationEnabled": false,
"wordLevelTimestampsEnabled": true,
"channels": [
0,
1
],
"punctuationMode": "DictatedAndAutomatic",
"profanityFilterMode": "Masked",
"languageIdentification": {
"candidateLocales": [
"en-US",
"de-DE",
"es-ES"
]
}
},
"lastActionDateTime": "2024-05-21T14:18:06Z",
"status": "NotStarted",
"createdDateTime": "2024-05-21T14:18:06Z",
"locale": "en-US",
"displayName": "My Transcription"
}
A propriedade de nível self
superior no corpo da resposta é o URI da transcrição. Use esse URI para obter detalhes, como o URI das transcrições e dos arquivos de relatório de transcrição. Você também usa esse URI para atualizar ou excluir uma transcrição.
Você pode consultar o status de suas transcrições com a operação Transcriptions_Get .
Ligue Transcriptions_Delete regularmente do serviço, depois de recuperar os resultados. Como alternativa, defina a timeToLive
propriedade para garantir a eventual exclusão dos resultados.
Gorjeta
Você também pode tentar a API de transcrição em lote usando Python, C# ou Node.js no GitHub.
Para criar uma transcrição, use o spx batch transcription create
comando. Construa os parâmetros de solicitação de acordo com as seguintes instruções:
- Defina o parâmetro necessário
content
. Você pode especificar uma lista delimitada por vírgulas de arquivos individuais ou a URL para um contêiner inteiro. Para obter mais informações sobre o armazenamento de blob do Azure para transcrição em lote, consulte Localizar arquivos de áudio para transcrição em lote. - Defina a propriedade necessária
language
. Esse valor deve corresponder à localidade esperada dos dados de áudio a serem transcritos. Não é possível alterar a localidade mais tarde. O parâmetro Speech CLIlanguage
corresponde àlocale
propriedade na solicitação e resposta JSON. - Defina a propriedade necessária
name
. Escolha um nome de transcrição ao qual possa fazer referência mais tarde. O nome da transcrição não precisa ser exclusivo e pode ser alterado posteriormente. O parâmetro Speech CLIname
corresponde àdisplayName
propriedade na solicitação e resposta JSON.
Aqui está um exemplo de comando da CLI de fala que cria um trabalho de transcrição:
spx batch transcription create --name "My Transcription" --language "en-US" --content https://crbn.us/hello.wav,https://crbn.us/whatstheweatherlike.wav
Deverá receber um corpo de resposta no seguinte formato:
{
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/7f4232d5-9873-47a7-a6f7-4a3f00d00dc0",
"model": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/5988d691-0893-472c-851e-8e36a0fe7aaf"
},
"links": {
"files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/7f4232d5-9873-47a7-a6f7-4a3f00d00dc0/files"
},
"properties": {
"diarizationEnabled": false,
"wordLevelTimestampsEnabled": false,
"channels": [
0,
1
],
"punctuationMode": "DictatedAndAutomatic",
"profanityFilterMode": "Masked"
},
"lastActionDateTime": "2024-05-21T14:21:59Z",
"status": "NotStarted",
"createdDateTime": "2024-05-21T14:21:59Z",
"locale": "en-US",
"displayName": "My Transcription",
"description": ""
}
A propriedade de nível self
superior no corpo da resposta é o URI da transcrição. Use esse URI para obter detalhes, como o URI das transcrições e dos arquivos de relatório de transcrição. Você também usa esse URI para atualizar ou excluir uma transcrição.
Para obter ajuda da CLI de fala com transcrições, execute o seguinte comando:
spx help batch transcription
Solicitar opções de configuração
Aqui estão algumas opções de propriedade para configurar uma transcrição quando você chama a operação Transcriptions_Create . Você pode encontrar mais exemplos na mesma página, como a criação de uma transcrição com identificação de idioma.
Property | Description |
---|---|
channels |
Uma matriz de números de canal para processar. Canais 0 e 1 são transcritos por padrão. |
contentContainerUrl |
Você pode enviar arquivos de áudio individuais ou um contêiner de armazenamento inteiro. Você deve especificar o local dos dados de áudio usando a contentContainerUrl propriedade ou contentUrls . Para obter mais informações sobre o armazenamento de blob do Azure para transcrição em lote, consulte Localizar arquivos de áudio para transcrição em lote.Esta propriedade não é retornada na resposta. |
contentUrls |
Você pode enviar arquivos de áudio individuais ou um contêiner de armazenamento inteiro. Você deve especificar o local dos dados de áudio usando a contentContainerUrl propriedade ou contentUrls . Para obter mais informações, consulte Localizar arquivos de áudio para transcrição em lote.Esta propriedade não é retornada na resposta. |
destinationContainerUrl |
O resultado pode ser armazenado em um contêiner do Azure. Se você não especificar um contêiner, o serviço de Fala armazenará os resultados em um contêiner gerenciado pela Microsoft. Quando o trabalho de transcrição é excluído, os dados do resultado da transcrição também são excluídos. Para obter mais informações, como os cenários de segurança suportados, consulte Especificar uma URL de contêiner de destino. |
diarization |
Indica que o serviço de Fala deve tentar a análise de diarização na entrada, que se espera que seja um canal mono que contenha várias vozes. O recurso não está disponível com gravações estéreo. Diarização é o processo de separação de alto-falantes em dados de áudio. O pipeline de lote pode reconhecer e separar vários alto-falantes em gravações de canal mono. Especifique o número mínimo e máximo de pessoas que podem estar falando. Você também deve definir a diarizationEnabled propriedade como true . O ficheiro de transcrição contém uma speaker entrada para cada frase transcrita.Você precisa usar essa propriedade quando espera três ou mais alto-falantes. Para dois alto-falantes, definir diarizationEnabled a propriedade como true é suficiente. Para obter um exemplo do uso da propriedade, consulte Transcriptions_Create.O número máximo de falantes para diarização deve ser inferior a 36 e superior ou igual à minSpeakers propriedade. Para obter um exemplo, consulte Transcriptions_Create.Quando essa propriedade é selecionada, o comprimento do áudio de origem não pode exceder 240 minutos por arquivo. Nota: Esta propriedade só está disponível com a API REST de fala para texto versão 3.1 e posterior. Se você definir essa propriedade com qualquer versão anterior, como a versão 3.0, ela será ignorada e apenas dois alto-falantes serão identificados. |
diarizationEnabled |
Especifica que o serviço de Fala deve tentar a análise de diarização na entrada, que se espera que seja um canal mono que contenha duas vozes. O valor predefinido é false .Para três ou mais vozes, você também precisa usar a propriedade diarization . Use somente com a API REST de fala para texto versão 3.1 e posterior.Quando essa propriedade é selecionada, o comprimento do áudio de origem não pode exceder 240 minutos por arquivo. |
displayName |
O nome da transcrição do lote. Escolha um nome ao qual possa referir-se mais tarde. O nome para exibição não precisa ser exclusivo. Esta propriedade é necessária. |
displayFormWordLevelTimestampsEnabled |
Especifica se os carimbos de data/hora no nível da palavra devem ser incluídos no formulário de exibição dos resultados da transcrição. Os resultados são retornados na displayWords propriedade do arquivo de transcrição. O valor predefinido é false .Nota: Esta propriedade só está disponível com a API REST de fala para texto versão 3.1 e posterior. |
languageIdentification |
A identificação de idioma é usada para identificar idiomas falados em áudio quando comparados com uma lista de idiomas suportados. Se você definir a languageIdentification propriedade, então você também deve definir sua propriedade inclusa candidateLocales . |
languageIdentification.candidateLocales |
As localidades do candidato para identificação de idioma, como "properties": { "languageIdentification": { "candidateLocales": ["en-US", "de-DE", "es-ES"]}} . Um mínimo de duas e um máximo de dez localidades candidatas, incluindo a localidade principal para a transcrição, são suportadas. |
locale |
A localidade da transcrição do lote. Esse valor deve corresponder à localidade esperada dos dados de áudio a serem transcritos. A localidade não pode ser alterada posteriormente. Esta propriedade é necessária. |
model |
Você pode definir a model propriedade para usar um modelo base específico ou um modelo de fala personalizado. Se você não especificar o model , o modelo base padrão para a localidade será usado. Para obter mais informações, consulte Usar um modelo personalizado e Usar um modelo Whisper. |
profanityFilterMode |
Especifica como lidar com palavrões em resultados de reconhecimento. Os valores aceites são None desativar a filtragem de palavrões, Masked substituir palavrões por asteriscos, Removed remover todos os palavrões do resultado ou Tags adicionar etiquetas de palavrões. O valor predefinido é Masked . |
punctuationMode |
Especifica como lidar com a pontuação nos resultados de reconhecimento. Os valores aceites são None desativar a pontuação, Dictated implicar pontuação explícita (falada), Automatic deixar o descodificador lidar com a pontuação ou DictatedAndAutomatic utilizar pontuação ditada e automática. O valor predefinido é DictatedAndAutomatic .Esta propriedade não é aplicável a modelos Whisper. |
timeToLive |
Uma duração após a criação do trabalho de transcrição, quando os resultados da transcrição serão excluídos automaticamente. O valor é uma duração codificada pela ISO 8601. Por exemplo, especifique PT12H para 12 horas. Como alternativa, você pode ligar para Transcriptions_Delete regularmente depois de recuperar os resultados da transcrição. |
wordLevelTimestampsEnabled |
Especifica se carimbos de data/hora no nível da palavra devem ser incluídos na saída. O valor predefinido é false .Esta propriedade não é aplicável a modelos Whisper. Whisper é um modelo somente de exibição, portanto, o campo lexical não é preenchido na transcrição. |
Para obter ajuda da CLI de fala com as opções de configuração de transcrição, execute o seguinte comando:
spx help batch transcription create advanced
Usar um modelo personalizado
A transcrição em lote usa o modelo base padrão para a localidade especificada. Não é necessário definir nenhuma propriedade para usar o modelo base padrão.
Opcionalmente, você pode modificar o exemplo de transcrição de criação anterior definindo a model
propriedade para usar um modelo base específico ou um modelo de fala personalizado.
curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -H "Content-Type: application/json" -d '{
"contentUrls": [
"https://crbn.us/hello.wav",
"https://crbn.us/whatstheweatherlike.wav"
],
"locale": "en-US",
"displayName": "My Transcription",
"model": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/5988d691-0893-472c-851e-8e36a0fe7aaf"
},
"properties": {
"wordLevelTimestampsEnabled": true,
},
}' "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions"
spx batch transcription create --name "My Transcription" --language "en-US" --content https://crbn.us/hello.wav,https://crbn.us/whatstheweatherlike.wav --model "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/5988d691-0893-472c-851e-8e36a0fe7aaf"
Para usar um modelo de fala personalizado para transcrição em lote, você precisa do URI do modelo. A propriedade de nível self
superior no corpo da resposta é o URI do modelo. Você pode recuperar o local do modelo ao criar ou obter um modelo. Para obter mais informações, consulte o exemplo de resposta JSON em Criar um modelo.
Gorjeta
Um ponto de extremidade de implantação hospedado não é necessário para usar fala personalizada com o serviço de transcrição em lote. Você pode conservar recursos se usar o modelo de fala personalizado apenas para transcrição em lote.
As solicitações de transcrição em lote para modelos expirados falham com um erro 4xx. Defina a model
propriedade como um modelo base ou modelo personalizado que não expirou. Caso contrário, não inclua a model
propriedade para usar sempre o modelo base mais recente. Para obter mais informações, consulte Escolher um modelo e Ciclo de vida do modelo de fala personalizado.
Use um modelo Whisper
O Azure AI Speech dá suporte ao modelo Whisper da OpenAI usando a API de transcrição em lote. Você pode usar o modelo Whisper para transcrição em lote.
Nota
O Serviço OpenAI do Azure também suporta o modelo Whisper da OpenAI para conversão de voz em texto com uma API REST síncrona. Para saber mais, consulte Fala em texto com o modelo Azure OpenAI Whisper. Para obter mais informações sobre quando usar o Azure AI Speech vs. Azure OpenAI Service, consulte O que é o modelo Whisper?
Para usar um modelo Whisper para transcrição em lote, você precisa definir a model
propriedade. Whisper é um modelo somente de exibição, portanto, o campo lexical não é preenchido na resposta.
Importante
Para modelos Whisper, você deve sempre usar a versão 3.2 da API de fala para texto.
A transcrição em lote usando modelos Whisper é suportada nas regiões Leste da Austrália, Centro dos EUA, Leste dos EUA, Centro-Norte dos EUA, Centro-Sul dos EUA, Sudeste Asiático e Europa Ocidental.
Você pode fazer uma solicitação de Models_ListBaseModels para obter modelos base disponíveis para todas as localidades.
Faça uma solicitação HTTP GET como mostrado no exemplo a seguir para a eastus
região. Substitua YourSubscriptionKey
pela chave de recurso de fala. Substitua eastus
se estiver usando uma região diferente.
curl -v -X GET "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base" -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey"
Por padrão, apenas os 100 modelos básicos mais antigos são retornados. Use os skip
parâmetros e top
consulta para percorrer os resultados. Por exemplo, a solicitação a seguir retorna os próximos 100 modelos básicos após os primeiros 100.
curl -v -X GET "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base?skip=100&top=100" -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey"
Certifique-se de definir as variáveis de configuração para um recurso de fala em uma das regiões suportadas. Você pode executar o spx csr list --base
comando para obter modelos base disponíveis para todas as localidades.
spx csr list --base --api-version v3.2
A displayName
propriedade de um modelo Whisper contém "Whisper", conforme mostrado neste exemplo. Whisper é um modelo somente de exibição, portanto, o campo lexical não é preenchido na transcrição.
{
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/e418c4a9-9937-4db7-b2c9-8afbff72d950",
"links": {
"manifest": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/e418c4a9-9937-4db7-b2c9-8afbff72d950/manifest"
},
"properties": {
"deprecationDates": {
"adaptationDateTime": "2025-04-15T00:00:00Z",
"transcriptionDateTime": "2026-04-15T00:00:00Z"
},
"features": {
"supportsTranscriptions": true,
"supportsEndpoints": false,
"supportsTranscriptionsOnSpeechContainers": false,
"supportsAdaptationsWith": [
"Acoustic"
],
"supportedOutputFormats": [
"Display"
]
},
"chargeForAdaptation": true
},
"lastActionDateTime": "2024-02-29T15:53:28Z",
"status": "Succeeded",
"createdDateTime": "2024-02-29T15:46:07Z",
"locale": "en-US",
"displayName": "20240228 Whisper Large V2",
"description": "OpenAI Whisper Model in Azure AI Speech (Whisper v2-large)"
},
Você define o URI do modelo completo como mostrado neste exemplo para a eastus
região. Substitua YourSubscriptionKey
pela chave de recurso de fala. Substitua eastus
se estiver usando uma região diferente.
curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -H "Content-Type: application/json" -d '{
"contentUrls": [
"https://crbn.us/hello.wav",
"https://crbn.us/whatstheweatherlike.wav"
],
"locale": "en-US",
"displayName": "My Transcription",
"model": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/e418c4a9-9937-4db7-b2c9-8afbff72d950"
},
"properties": {
"wordLevelTimestampsEnabled": true,
},
}' "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions"
Você define o URI do modelo completo como mostrado neste exemplo para a eastus
região. Substitua eastus
se estiver usando uma região diferente.
spx batch transcription create --name "My Transcription" --language "en-US" --content https://crbn.us/hello.wav,https://crbn.us/whatstheweatherlike.wav --model "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/e418c4a9-9937-4db7-b2c9-8afbff72d950" --api-version v3.2
Especificar uma URL de contêiner de destino
O resultado da transcrição pode ser armazenado em um contêiner do Azure. Se você não especificar um contêiner, o serviço de Fala armazenará os resultados em um contêiner gerenciado pela Microsoft. Nesse caso, quando o trabalho de transcrição é excluído, os dados do resultado da transcrição também são excluídos.
Você pode armazenar os resultados de uma transcrição em lote em um contêiner de armazenamento de Blob do Azure gravável usando a opção destinationContainerUrl
na solicitação de criação de transcrição em lote. Esta opção utiliza apenas um URI SAS ad hoc e não suporta o mecanismo de segurança de serviços fidedignos do Azure. Esta opção também não suporta SAS baseada em política de acesso. O recurso de conta de armazenamento do contêiner de destino deve permitir todo o tráfego externo.
Se você quiser armazenar os resultados da transcrição em um contêiner de armazenamento de Blob do Azure usando o mecanismo de segurança de serviços confiáveis do Azure, considere usar o BYOS (traga seu próprio armazenamento). Para obter mais informações, consulte Usar o recurso de fala Bring your own storage (BYOS) para conversão de fala em texto.