Como usar a tradução de vídeo

Observação

Esse recurso está atualmente em visualização pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não recomendamos isso para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos. Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.

Neste artigo, você aprenderá a usar a tradução de vídeo de Fala de IA do Azure no estúdio.

Tudo o que é preciso para começar é um vídeo original. Veja se a tradução de vídeo dá suporte ao seuidioma e à região.

Criar um projeto de tradução de vídeo

Para criar um projeto de tradução de vídeo, siga essas etapas:

  1. Entre no Speech Studio.

  2. Selecione a assinatura e o recurso de Fala com que vai trabalhar.

  3. Selecione Tradução de vídeo.

  4. Na página Criar e gerenciar projetos, selecione Criar um projeto.

  5. Na página Novo projeto, selecione Tipo de voz.

    Captura de tela da seleção do tipo de voz na nova página do projeto.

    Você pode selecionar Voz neural pré-definida ou Voz pessoal como o Tipo de voz. Para voz neural predefinida, o sistema seleciona automaticamente a voz predefinida mais adequada combinando a voz do alto-falante no vídeo com vozes predefinidas. Para voz pessoal, o sistema oferece um modelo que gera replicação de voz de alta qualidade em poucos segundos.

    Observação

    Para usar a voz pessoal, você precisa solicitar acesso.

  6. Carregue o seu arquivo de vídeo arrastando e soltando o arquivo de vídeo ou selecionando o arquivo manualmente.

    Captura de tela do carregamento do arquivo de vídeo na página do novo projeto.

    Verifique se o vídeo está em .mp4 formato, menos de 500 MB e menor que 60 minutos.

  7. Forneça o Nome do projeto e selecione Número de locutores, Idioma do vídeo, Idioma de destino de tradução.

    Captura de tela do fornecimento de informações de vídeo na página do novo projeto.

    Se você quiser usar seus próprios arquivos de legenda, selecione Adicionar arquivo de legenda. Você pode optar por carregar o arquivo de legenda de origem ou o arquivo de legenda de destino. O arquivo de legenda pode estar no formato WebVTT ou JSON. Você pode baixar um arquivo VTT de exemplo para a sua referência selecionando Baixar o arquivo VTT de exemplo.

    Captura de tela da adição de arquivo de legenda na nova página do projeto.

  8. Depois de examinar as informações de preços e a instrução de direitos autorais, prossiga para criar o projeto.

    Depois que o upload for concluído, você poderá verificar o status do processamento na guia do projeto.

    Depois que o projeto for criado, você poderá selecioná-lo para examinar as configurações detalhadas e fazer ajustes de acordo com as suas preferências.

Verificar e ajustar as configurações de voz

Na página de detalhes do projeto, o projeto oferece duas guias Traduzidas e Originais em Vídeo, permitindo compará-las lado a lado.

No lado direito do vídeo, você pode exibir o script original e o script traduzido. Passar o mouse sobre cada parte do script original dispara o vídeo para ir automaticamente para o segmento correspondente do vídeo original, enquanto passar o mouse sobre cada parte do script traduzido dispara o vídeo para ir para o segmento traduzido correspondente.

Você também pode adicionar ou remover segmentos conforme necessário. Quando você quiser adicionar um segmento, verifique se o novo carimbo de data/hora do segmento não se sobrepõe ao segmento anterior e ao próximo, e a hora de término do segmento deve ser maior que a hora de início. O formato correto do carimbo de data/hora deve ser hh:mm:ss.ms. Caso contrário, você não poderá aplicar as alterações.

Você pode ajustar o período de tempo dos scripts diretamente usando a forma de onda de áudio abaixo do vídeo. Depois de selecionar Aplicar alterações, os ajustes serão aplicados.

Se você encontrar segmentos com um nome de voz "não identificado", pode ser porque o sistema não pôde detectar a voz com precisão, especialmente em situações em que as vozes do locutor se sobrepõem. Nesses casos, é aconselhável alterar manualmente o nome da voz.

Captura de tela de um segmento com nome de voz não identificado.

Se você quiser ajustar a voz, selecione as Configurações de voz para fazer algumas alterações. Na página Configurações de voz, você pode ajustar o tipo de voz, o gênero e a voz. Selecione o exemplo de voz à direita de Voz para determinar sua seleção de voz. Se você encontrar a voz ausente, poderá adicionar o novo nome de voz selecionando Adicionar alto-falante. Depois de alterar as configurações, selecione Atualizar.

Captura de tela do ajuste das configurações de voz na página de configurações de voz.

Se você fizer alterações várias vezes, mas ainda não tiver terminado, só precisará salvar as alterações feitas selecionando Salvar. Depois de fazer todas as alterações, selecione Aplicar alterações para aplicá-las ao vídeo. Você será cobrado somente depois de selecionar Aplicar alterações.

Captura de tela da seleção do botão aplicar alterações depois de fazer todas as alterações.

Você pode converter o vídeo original em um novo idioma selecionando Novo idioma. Na página Traduzir, você pode escolher um novo idioma traduzido e um tipo de voz. Depois que o arquivo de vídeo for traduzido, um novo projeto será criado automaticamente.

A API REST de tradução de vídeo facilita a integração perfeita da tradução de vídeo em seus aplicativos. Ele oferece suporte ao upload, gerenciamento e refinamento de traduções de vídeo, com múltiplas iterações para melhoria contínua. Nesse artigo, você aprenderá como utilizar a tradução de vídeo por meio da API REST.

Este diagrama mostra uma visão geral de alto nível do fluxo de trabalho.

Diagrama do fluxo de trabalho da API de tradução de vídeo.

Você pode usar as seguintes operações da API REST para tradução de vídeo:

Operação Método Chamada da API REST
Criar uma tradução PUT /translations/{translationId}
Listar traduções GET /translations
Obter uma tradução por ID de tradução GET /translations/{translationId}
Criar uma iteração PUT /translations/{translationId}/iterations/{iterationId}
Listar iterações GET /translations/{translationId}/iterations
Obter uma iteração por ID de iteração GET /translations/{translationId}/iterations/{iterationId}
Obter operação por ID de operação GET /operations/{operationId}
Excluir uma tradução por ID de tradução DELETE /translations/{translationId}

Para obter exemplos de código, consulte GitHub.

Esse artigo descreve as principais etapas do processo de API, incluindo a criação de uma tradução, a criação de uma iteração, a verificação do status de cada operação, a obtenção de uma iteração por ID de iteração e a exclusão de uma tradução por ID de tradução. Para obter detalhes completos, consulte os links fornecidos para cada API na tabela.

Criar uma tradução

Para enviar uma solicitação de tradução de vídeo, você precisa construir um caminho e um corpo de solicitação HTTP PUT de acordo com as seguintes instruções:

  • Especifique Operation-Id: O Operation-Id deve ser exclusivo para cada operação. Ele garante que cada operação seja rastreada separadamente. Substitua [operationId] por um ID de operação.

  • Especifique translationId: O translationId deve ser único. Substitua [translationId] por um ID de tradução.

  • Defina a entrada necessária: inclua detalhes como sourceLocale, targetLocale, voiceKind, e videoFileUrl. Certifique-se de ter o URL do vídeo do Armazenamento de Blobs do Azure. Para saber quais são os idiomas com suporte para tradução de vídeo, consulte os idiomas de origem e de destino com suporte. Você pode definir o parâmetro voiceKind para qualquer umPlatformVoice ou PersonalVoice. Para PlatformVoice, o sistema seleciona automaticamente a voz pré-criada mais adequada, combinando a voz do locutor no vídeo com as vozes pré-criadas. Para PersonalVoice, o sistema oferece um modelo que gera replicação de voz de alta qualidade em poucos segundos.

    Observação

    Para usar a voz pessoal, você precisa solicitar acesso.

  • Substitua [YourResourceKey] pela sua chave do recurso de Fala e substitua [YourSpeechRegion] pela sua região do recurso de Fala.

Criar uma tradução não inicia o processo de tradução. Você pode começar a traduzir o vídeo criando uma iteração. O exemplo a seguir é para o shell do Windows. Certifique-se de escapar & com ^& se o URL contiver&. No código de exemplo a seguir, usaremos uma URL de vídeo pública, que você pode usar para seus próprios testes.

curl -v -X PUT -H "Ocp-Apim-Subscription-Key: [YourResourceKey]" -H "Operation-Id: [operationId]" -H "Content-Type: application/json" -d "{\"displayName\": \"[YourDisplayName]\",\"description\": \"[OptionalYourDescription]\",\"input\": {\"sourceLocale\": \"[VideoSourceLocale]\",\"targetLocale\": \"[TranslationTargetLocale]\",\"voiceKind\": \"[PlatformVoice/PersonalVoice]\",\"speakerCount\": [OptionalVideoSpeakerCount],\"subtitleMaxCharCountPerSegment\": [OptionalYourPreferredSubtitleMaxCharCountPerSegment],\"exportSubtitleInVideo\": [Optional true/false],\"videoFileUrl\": \"https://speechstudioprodpublicsa.blob.core.windows.net/ttsvoice/VideoTranslation/PublicDoc/SampleData/es-ES-TryOutOriginal.mp4\"}}" "https://[YourSpeechRegion].api.cognitive.microsoft.com/videotranslation/translations/[translationId]?api-version=2024-05-20-preview" 

Importante

Os dados criados por meio da API não aparecerão no Speech Studio, e os dados entre a API e o Speech Studio não serão sincronizados.

Você deve receber um corpo de resposta no seguinte formato:

{
  "input": {
    "sourceLocale": "zh-CN",
    "targetLocale": "en-US",
    "voiceKind": "PlatformVoice",
    "speakerCount": 1,
    "subtitleMaxCharCountPerSegment": 30,
    "exportSubtitleInVideo": true
  },
  "status": "NotStarted",
  "lastActionDateTime": "2024-09-20T06:25:05.058Z",
  "id": "mytranslation0920",
  "displayName": "demo",
  "description": "for testing",
  "createdDateTime": "2024-09-20T06:25:05.058Z"
}

A propriedade de status deve progredir de NotStarted status para Running e, finalmente, para Succeeded ou Failed. Você pode chamar a API Obter operação por ID de operação periodicamente até que o status retornado seja Succeeded ou Failed. Essa operação permite que você monitore o progresso do seu processo de criação de tradução.

Obter operação por ID de operação

Verifique o status de uma operação específica usando seu ID de operação. O ID da operação é exclusivo para cada operação, para que você possa rastrear cada operação separadamente.

Substitua [YourResourceKey]pela sua chave de recurso de Serviço Cognitivo do Azure para Fala, [YourSpeechRegion] pela sua região de recurso de fala e [operationId] pelo ID da operação que você deseja verificar.

curl -v -X GET -H "Ocp-Apim-Subscription-Key:[YourResourceKey]" "https://[YourSpeechRegion].api.cognitive.microsoft.com/videotranslation/operations/[operationId]?api-version=2024-05-20-preview" 

Você deve receber um corpo de resposta no seguinte formato:

{
  "id": "createtranslation0920-1",
  "status": "Running"
}

Criar uma iteração

Para começar a traduzir seu vídeo ou atualizar uma iteração de uma tradução existente, você precisa construir um caminho e um corpo de solicitação HTTP PUT de acordo com as seguintes instruções:

  • Especifique Operation-Id: O Operation-Id deve ser exclusivo para cada operação, como a criação de cada iteração. Substitua [operationId] por um ID exclusivo para essa operação.
  • Especificar translationId: Se várias iterações forem executadas em uma única tradução, o ID da tradução permanecerá inalterado.
  • Especifique iterationId: O iterationId deve ser exclusivo para cada operação. Substitua [iterationId] por um ID de iteração.
  • Defina a entrada necessária: inclua detalhes como speakerCount, subtitleMaxCharCountPerSegment,exportSubtitleInVideo, ou webvttFile. Por padrão, nenhum subtítulo é incorporada ao vídeo de saída.
  • Substitua [YourResourceKey] pela sua chave do recurso de Fala e substitua [YourSpeechRegion] pela sua região do recurso de Fala.

O exemplo a seguir é para o shell do Windows. Certifique-se de escapar & com ^& se o URL contiver&.

curl -v -X PUT -H "Ocp-Apim-Subscription-Key: [YourResourceKey]" -H "Operation-Id: [operationId]"  -H "Content-Type: application/json" -d "{\"input\": {\"speakerCount\": [OptionalVideoSpeakerCount],\"subtitleMaxCharCountPerSegment\": [OptionalYourPreferredSubtitleMaxCharCountPerSegment],\"exportSubtitleInVideo\": [Optional true/false],\"webvttFile\": {\"Kind\": \"[SourceLocaleSubtitle/TargetLocaleSubtitle/MetadataJson]\", \"url\": \"[AzureBlobUrlWithSas]\"}}}" "https://[YourSpeechRegion].api.cognitive.microsoft.com/videotranslation/translations/[translationId]/iterations/[iterationId]?api-version=2024-05-20-preview"  

Observação

Ao criar uma iteração, se você já especificou os parâmetros opcionais speakerCount, subtitleMaxCharCountPerSegment, e exportSubtitleInVideo durante a criação da tradução, não será necessário especificá-los novamente. Os valores herdarão das configurações de tradução. Depois que esses parâmetros forem definidos ao criar uma iteração, os novos valores substituirão as configurações originais.

O parâmetro webvttFile não é necessário ao criar a primeira iteração. Entretanto, a partir da segunda iteração, você deve especificar o parâmetro webvttFile no processo de iteração. Você precisa baixar o arquivo webvtt, fazer as edições necessárias e depois carregá-lo no seu armazenamento de Blobs do Azure. Você precisa especificar o URL do Blob no código curl.

Os dados criados por meio da API não aparecerão no Speech Studio, e os dados entre a API e o Speech Studio não serão sincronizados.

O arquivo de legenda pode estar no formato WebVTT ou JSON. Se você não tiver certeza sobre como preparar um arquivo WebVTT, consulte os seguintes formatos de exemplo.


00:00:01.010 --> 00:00:06.030
Hello this is a sample subtitle.

00:00:07.030 --> 00:00:09.030
Hello this is a sample subtitle.

Você deve receber um corpo de resposta no seguinte formato:

{
  "input": {
    "speakerCount": 1,
    "subtitleMaxCharCountPerSegment": 30,
    "exportSubtitleInVideo": true
  },
  "status": "Not Started",
  "lastActionDateTime": "2024-09-20T06:31:53.760Z",
  "id": "firstiteration0920",
  "createdDateTime": "2024-09-20T06:31:53.760Z"
}

Você pode usar operationId você especificou e chamar a API Obter operação por ID de operação periodicamente até que o status retornado seja Succeeded ou Failed. Essa operação permite que você monitore o progresso da criação do processo de iteração.

Obter uma iteração por ID de iteração

Para recuperar detalhes de uma iteração específica por seu ID, use a solicitação HTTP GET. Substitua [YourResourceKey] pela sua chave de recurso de Serviço Cognitivo do Azure para Fala, [YourSpeechRegion] pela sua região de recurso de fala, [translationId] pelo ID de tradução que você deseja verificar e [iterationId] pelo ID de iteração que você deseja verificar.

curl -v -X GET -H "Ocp-Apim-Subscription-Key: [YourResourceKey]" "https://[YourSpeechRegion].api.cognitive.microsoft.com/videotranslation/translations/[translationId]/iterations/[iterationId]?api-version=2024-05-20-preview"  

Você deve receber um corpo de resposta no seguinte formato:

{
  "input": {
    "speaker Count": 1,
    "subtitleMaxCharCountPerSegment": 30,
    "exportSubtitleInVideo": true
  },
  "result": {
    "translatedVideoFileUrl": "https://xxx.blob.core.windows.net/container1/video.mp4?sv=2023-01-03&st=2024-05-20T08%3A27%3A15Z&se=2024-05-21T08%3A27%3A15Z&sr=b&sp=r&sig=xxx",
    "sourceLocaleSubtitleWebvttFileUrl": "https://xxx.blob.core.windows.net/container1/sourceLocale.vtt?sv=2023-01-03&st=2024-05-20T08%3A27%3A15Z&se=2024-05-21T08%3A27%3A15Z&sr=b&sp=r&sig=xxx",
    "targetLocaleSubtitleWebvttFileUrl": "https://xxx.blob.core.windows.net/container1/targetLocale.vtt?sv=2023-01-03&st=2024-05-20T08%3A27%3A15Z&se=2024-05-21T08%3A27%3A15Z&sr=b&sp=r&sig=xxx",
    "metadataJsonWebvttFileUrl": "https://xxx.blob.core.windows.net/container1/metadataJsonLocale.vtt?sv=2023-01-03&st=2024-05-20T08%3A27%3A15Z&se=2024-05-21T08%3A27%3A15Z&sr=b&sp=r&sig=xxx"
  },
  "status": "Succeeded",
  "lastActionDateTime": "2024-09-20T06:32:59.933Z",
  "id": "firstiteration0920",
  "createdDateTime": "2024-09-20T06:31:53.760Z"
}

Excluir uma tradução por ID de tradução

Remover uma tradução específica identificada por translationId. Essa operação também remove todas as iterações associadas a essa tradução. Substitua [YourResourceKey] pela sua chave de recurso de Serviço Cognitivo do Azure para Fala, [YourSpeechRegion] pela sua região de recurso de fala e [translationId] pelo ID de tradução que você deseja excluir. Se não for excluído manualmente, o serviço retém o histórico de tradução por até 31 dias.

curl -v -X DELETE -H "Ocp-Apim-Subscription-Key: [YourResourceKey]" "https://[YourSpeechRegion].api.cognitive.microsoft.com/videotranslation/translations/[translationId]?api-version=2024-05-20-preview" 

Os cabeçalhos de resposta incluirão HTTP/1.1 204 No Content se a solicitação de exclusão tiver sido bem-sucedida.

Informações adicionais

Essa seção fornece comandos curl para outras chamadas de API que não foram descritas em detalhes acima. Você pode explorar cada API usando os seguintes comandos.

Listar traduções

Para listar todas as traduções de vídeo que foram carregadas e processadas na sua conta de recursos, faça uma solicitação HTTP GET conforme mostrado no exemplo a seguir. Substitua YourResourceKey pela sua chave do recurso de Fala e substitua YourSpeechRegion pela sua região do recurso de Fala.

curl -v -X GET -H "Ocp-Apim-Subscription-Key: [YourResourceKey]" "https://[YourSpeechRegion].api.cognitive.microsoft.com/videotranslation/translations?api-version=2024-05-20-preview"

Obter uma tradução por ID de tradução

Essa operação recupera informações detalhadas sobre uma tradução específica, identificada por seu significado exclusivo translationId. Substitua [YourResourceKey] pela sua chave de recurso de Serviço Cognitivo do Azure para Fala, [YourSpeechRegion] pela sua região de recurso de fala e [translationId] pelo ID de tradução que você deseja verificar.

curl -v -X GET -H "Ocp-Apim-Subscription-Key: [YourResourceKey]" "https://[YourSpeechRegion].api.cognitive.microsoft.com/videotranslation/translations/[translationId]?api-version=2024-05-20-preview" 

Listar iterações

Listar todas as iterações para uma tradução específica. Essa solicitação lista todas as iterações sem informações detalhadas. Substitua [YourResourceKey] pela sua chave de recurso de Serviço Cognitivo do Azure para Fala, [YourSpeechRegion] pela sua região de recurso de fala e [translationId] pelo ID de tradução que você deseja verificar.

curl -v -X GET -H "Ocp-Apim-Subscription-Key: [YourResourceKey]" "https://[YourSpeechRegion].api.cognitive.microsoft.com/videotranslation/translations/[translationId]/iterations?api-version=2024-05-20-preview"  

Códigos de status HTTP

A seção detalha os códigos de resposta HTTP e as mensagens da API REST de tradução de vídeo.

HTTP 200 – OK

"HTTP 200 – OK" indica que a solicitação foi bem-sucedida.

Erro HTTP 204

Um erro HTTP 204 indica que a solicitação foi bem-sucedida, mas o recurso não existe. Por exemplo:

  • Você tentou obter ou excluir uma tradução que não existe.
  • Você excluiu uma tradução com sucesso.

Erro HTTP 400

Aqui estão exemplos que podem resultar no erro 400:

  • O local de origem ou de destino especificado não está entre os locales suportados.
  • Você tentou usar um recurso de Fala F0, mas a região dá suporte apenas ao tipo de preço do recurso de Fala Standard.

Erro HTTP 500

O erro de servidor interno HTTP 500 indica que a solicitação falhou. O corpo da resposta contém a mensagem de erro.