Propriedades de síntese em lote para o avatar de conversão de texto em fala

As propriedades de síntese em lote podem ser agrupadas como: propriedades relacionadas ao avatar, propriedades relacionadas ao trabalho em lote e propriedades relacionadas da conversão de texto em fala, que são descritas nas tabelas a seguir.

Algumas propriedades no formato JSON são necessárias quando você cria um novo trabalho de síntese em lote. Outras propriedades são opcionais. A resposta de síntese em lote inclui outras propriedades para fornecer informações sobre o status e os resultados da síntese. Por exemplo, a propriedade outputs.result contém o local de onde você pode baixar um arquivo de vídeo que contém o vídeo de avatar. A partir de outputs.summary, você pode acessar o resumo e os detalhes de depuração.

Propriedades de avatar

A tabela a seguir descreve as propriedades do avatar.

Propriedade Descrição
avatarConfig.talkingAvatarCharacter O nome do personagem do avatar falante.

Os personagens de avatar com suporte podem ser encontrados aqui.

Esta propriedade é obrigatória.
avatarConfig.talkingAvatarStyle O nome do estilo do avatar falante.

Os estilos de avatar com suporte podem ser encontrados aqui.

Essa propriedade é necessária para o avatar predefinido e opcional para o avatar personalizado.
avatarConfig.customized Um valor bool que indica se o avatar a ser usado é um avatar personalizado ou não. True para avatar personalizado e false para avatar predefinido.

Essa propriedade é opcional e o valor padrão é false.
avatarConfig.videoFormat O formato do arquivo de vídeo de saída pode ser mp4 ou webm.

O formato webm é necessário para plano de fundo transparente.

Essa propriedade é opcional e o valor padrão é mp4.
avatarConfig.videoCodec O codec do vídeo de saída pode ser h264, hevc, vp9 ou av1.

Vp9 é necessário para plano de fundo transparente. A velocidade de síntese será mais baixa com o codec vp9, já que a codificação vp9 é mais lenta.

Essa propriedade é opcional e o valor padrão é hevc.
avatarConfig.bitrateKbps A taxa de bits para o vídeo de saída, que é um valor inteiro, com kbps de unidade.

Essa propriedade é opcional e o valor padrão é 2000.
avatarConfig.videoCrop Essa propriedade permite que você corte a saída do vídeo, o que significa gerar uma subárea em retângulo do vídeo original. Essa propriedade tem dois campos, que definem o vértice superior esquerdo e o vértice inferior direito do retângulo.

Essa propriedade é opcional e o comportamento padrão é gerar o vídeo completo.
avatarConfig.videoCrop.topLeft O vértice superior esquerdo do retângulo para corte de vídeo. Essa propriedade tem dois campos x e y, para definir a posição horizontal e vertical do vértice.

Essa propriedade é necessária quando properties.videoCrop está definido.
avatarConfig.videoCrop.bottomRight O vértice inferior direito do retângulo para corte de vídeo. Essa propriedade tem dois campos x e y, para definir a posição horizontal e vertical do vértice.

Essa propriedade é necessária quando properties.videoCrop está definido.
avatarConfig.subtitleType O tipo de subtítulo do arquivo de vídeo do avatar pode ser external_file, soft_embedded, hard_embedded ou none.

Essa propriedade é opcional e o valor padrão é soft_embedded.
avatarConfig.backgroundImage Adicione uma imagem de plano de fundo usando a propriedade avatarConfig.backgroundImage. O valor da propriedade deve ser uma URL apontando para a imagem desejada. Essa propriedade é opcional.
avatarConfig.backgroundColor Cor da tela de fundo do vídeo de avatar, que é uma cadeia de caracteres no formato #RRGGBBAA. Nesta cadeia de caracteres: RR, GG, BB e AA significam os canais vermelho, verde, azul e alfa, com intervalo de valor hexadecimal 00~FF. O canal Alfa controla a transparência, com o valor 00 para transparente, o valor FF para não transparente e o valor entre 00 e FF para semitransparente.

Essa propriedade é opcional e o valor padrão é #FFFFFFFF (branco).
outputs.result O local do arquivo de resultado da síntese em lote, que é um arquivo de vídeo que contém o avatar sintetizado.

Esta propriedade é somente para leitura.
properties.DurationInMilliseconds A duração da saída do vídeo em milissegundos.

Esta propriedade é somente para leitura.

Propriedades do trabalho de síntese do lote

A tabela a seguir descreve as propriedades do trabalho de síntese em lote.

Propriedade Descrição
createdDateTime A data e a hora em que o trabalho de síntese em lotes foi criado.

Esta propriedade é somente para leitura.
descrição A descrição da síntese em lotes.

Essa propriedade é opcional.
ID A ID do trabalho de síntese em lotes.

Esta propriedade é somente para leitura.
lastActionDateTime A data e a hora mais recentes em que o valor da propriedade foi alterado.

Esta propriedade é somente para leitura.
properties Um conjunto definido de configurações opcionais de síntese em lotes.
properties.destinationContainerUrl Os resultados da síntese em lotes podem ser armazenados em um contêiner gravável do Azure. Quando você não especifica um URI de contêiner com SAS (Assinaturas de Acesso Compartilhado), o Serviço de Fala armazena os resultados em um contêiner gerenciado pela Microsoft. Não há suporte para a SAS com políticas de acesso armazenadas. Quando o trabalho de síntese é excluído, o mesmo ocorre com os dados de resultado.

Essa propriedade opcional não é incluída na resposta quando você obtém o trabalho de síntese.
properties.timeToLiveInHours Uma duração em horas após a criação do trabalho de síntese, quando os resultados da síntese serão excluídos automaticamente. O tempo máximo de vida útil é de 744 horas. A data e a hora da exclusão automática para trabalhos de síntese com um status de "Êxito" ou "Falha" é calculada como a soma das propriedades lastActionDateTime e timeToLive.

Caso contrário, você pode chamar o método de síntese delete para remover o trabalho mais cedo.
status O status de processamento de síntese em lotes.

O status deve progredir de "NotStarted" para "Em execução" e, por fim, para "Êxito" ou "Falha".

Esta propriedade é somente para leitura.

Propriedades de conversão de texto em fala

A tabela a seguir descreve as propriedades de conversão de texto em fala.

Propriedade Descrição
customVoices Uma voz neural personalizada está associada a um nome e sua ID de implantação, como essa: "customVoices": {"your-custom-voice-name": "502ac834-6537-4bc3-9fd6-140114daa66d"}

Você pode usar o nome da voz no seu synthesisConfig.voice quando inputKind estiver definido como "PlainText" ou no texto SSML de entradas quando inputKind estiver definido como "SSML".

Essa propriedade é necessária para usar uma voz personalizada. Se você tentar usar uma voz personalizada que não está definida aqui, o serviço retornará um erro.
entradas O texto sem formatação ou SSML a ser sintetizado.

Quando o inputKind estiver definido como "PlainText", forneça texto sem formatação, conforme mostrado aqui: "entradas": [{"content": "O arco-íris tem sete cores."}]. Quando o inputKind for definido como "SSML", forneça texto na Linguagem de Marcação de Síntese de Fala (SSML), conforme mostrado aqui: "inputs": [{"content": "<speak version=''1.0''' xml:lang=''en-US'''><voice xml:lang=''en-US''' xml:gender=''Female''' name=''en-US-AvaMultilingualNeural'''>The rainbow has seven colors."}].

Inclua até 1.000 objetos de texto se desejar vários arquivos de saída de áudio. Veja um exemplo de texto de entrada que deve ser sintetizado para dois arquivos de saída de vídeo: "inputs": [{"content": "sintetizar isso em outro arquivo"},{"content": "sintetizar isso em outro arquivo"}].

Você não precisa de entradas de texto separadas para novos parágrafos. Em qualquer uma das entradas de texto (até 1.000), você pode especificar novos parágrafos usando a cadeia de caracteres "\r\n" (nova linha). Veja um exemplo de texto de entrada com dois parágrafos que devem ser sintetizados para o mesmo arquivo de saída de áudio: "inputs": [{"content": "sintetizar isso para um arquivo\r\nsintetizar isso para outro parágrafo no mesmo arquivo"}]

Essa propriedade é necessária quando você cria um novo trabalho de síntese em lotes. Essa propriedade não é incluída na resposta quando você obtém o trabalho de síntese.
properties.billingDetails O número de palavras que foram processadas e cobradas por vozes customNeural versus neural (predefinidas).

Esta propriedade é somente para leitura.
synthesisConfig As definições de configuração a serem usadas para síntese em lotes de texto sem formatação.

Essa propriedade só é aplicável quando inputKind é definido como "PlainText".
synthesisConfig.pitch O tom da saída de áudio.

Para obter informações sobre os valores aceitos, consulte a tabela ajustar prosódia na documentação do SSML (Linguagem de Marcação de Sintetização de Voz). Valores inválidos são ignorados.

Essa propriedade opcional só é aplicável quando inputKind é definido como "PlainText".
synthesisConfig.rate A taxa da saída de áudio.

Para obter informações sobre os valores aceitos, consulte a tabela ajustar prosódia na documentação do SSML (Linguagem de Marcação de Sintetização de Voz). Valores inválidos são ignorados.

Essa propriedade opcional só é aplicável quando inputKind é definido como "PlainText".
synthesisConfig.style Para algumas vozes, é possível ajustar o estilo de fala para expressar emoções diferentes como alegria, empatia e tranquilidade. Também é possível otimizar a voz para cenários diferentes, como atendimento ao cliente, noticiário e assistente de voz.

Para obter informações sobre os estilos disponíveis por voz, confira estilos de voz e funções.

Essa propriedade opcional só é aplicável quando inputKind é definido como "PlainText".
synthesisConfig.voice A voz que fala a saída de áudio.

Para obter informações sobre as vozes neurais predefinidas disponíveis, confira suporte a linguagem e voz. Para usar uma voz personalizada, você precisa especificar um mapeamento válido de ID de implantação e voz personalizada na propriedade customVoices.

Essa propriedade é necessária quando inputKind é definido como "PlainText".
synthesisConfig.volume O volume da saída de áudio.

Para obter informações sobre os valores aceitos, consulte a tabela ajustar prosódia na documentação do SSML (Linguagem de Marcação de Sintetização de Voz). Valores inválidos são ignorados.

Essa propriedade opcional só é aplicável quando inputKind é definido como "PlainText".
inputKind Indica se a propriedade de texto deve ser texto sem formatação ou SSML. Os valores possíveis que não diferenciam maiúsculas de minúsculas são "PlainText" e "SSML". Quando o inputKind é definido como "PlainText", você também deve definir a propriedade de voz synthesisConfig.

Esta propriedade é obrigatória.

Como editar a tela de fundo

Atualmente, a API de síntese do lote do avatar não dá suporte à configuração de vídeos em segundo plano; ele só dá suporte a imagens de plano de fundo estáticas. No entanto, se você quiser adicionar um plano de fundo para o vídeo durante a pós-produção, poderá gerar vídeos com uma tela de fundo transparente.

Para definir uma imagem de plano de fundo estática, use a propriedade avatarConfig.backgroundImage e especifique uma URL apontando para a imagem desejada. Além disso, você pode definir a cor da tela de fundo do vídeo avatar usando a propriedade avatarConfig.backgroundColor.

Para gerar um vídeo transparente em segundo plano, você deve definir as seguintes propriedades para os valores necessários na solicitação de síntese em lote:

Propriedade Valores necessários para transparência em segundo plano
properties.videoFormat webm
properties.videoCodec vp9
properties.backgroundColor #00000000 (ou transparent)

O Clipchamp é um exemplo de uma ferramenta de edição de vídeo que dá suporte ao vídeo transparente em segundo plano gerado pela API de síntese em lote.

Alguns softwares de edição de vídeo não dão suporte diretamente ao formato e só dão suporte à webm entrada transparente de vídeo em segundo plano, como o Adobe Premiere Pro. Nesses casos, primeiro você precisa converter o formato de vídeo de webm para .mov com uma ferramenta como o FFMPEG.

Linha de comando do FFMPEG:

ffmpeg -vcodec libvpx-vp9 -i <input.webm> -vcodec png -pix_fmt rgba metadata:s:v:0 alpha_mode="1" <output.mov>

O FFMPEG pode ser baixado em ffmpeg.org. Substitua <input.webm> e <output.mov> por seu caminho local e nome de arquivo na linha de comando.

Próximas etapas