Propriedades de síntese em lote para avatar de texto para 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 ao texto à 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 estado da síntese e resultados. Por exemplo, a outputs.result
propriedade contém o local de onde você pode baixar um arquivo de vídeo contendo o vídeo do avatar. No , você pode acessar o resumo e os detalhes de outputs.summary
depuração.
Propriedades do avatar
A tabela a seguir descreve as propriedades do avatar.
Property | Description |
---|---|
avatarConfig.talkingAvatarCharacter | O nome do personagem do avatar falante. Os personagens avatar suportados podem ser encontrados aqui. Esta propriedade é necessária. |
avatarConfig.talkingAvatarStyle | O nome de estilo do avatar falante. Os estilos de avatar suportados podem ser encontrados aqui. Esta propriedade é necessária para avatar pré-construído e opcional para avatar personalizado. |
avatarConfig.personalizado | Um valor bool que indica se o avatar a ser usado é avatar personalizado ou não. Verdadeiro para avatar personalizado e falso para avatar pré-construído. Essa propriedade é opcional e o valor padrão é false . |
avatarConfig.videoFormat | O formato para o arquivo de vídeo de saída, pode ser mp4 ou webm. O webm formato é necessário para o fundo transparente.Esta propriedade é opcional e o valor padrão é mp4. |
avatarConfig.videoCodec | O codec para saída de vídeo, pode ser h264, hevc, vp9 ou av1. Vp9 é necessário para fundo transparente. A velocidade de síntese será mais lenta com o codec vp9, pois a codificação vp9 é mais lenta. Essa propriedade é opcional e o valor padrão é hevc. |
avatarConfig.bitrateKbps | A taxa de bits para saída de vídeo, que é o valor inteiro, com kbps unidade. Essa propriedade é opcional e o valor padrão é 2000. |
avatarConfig.videoCrop | Esta propriedade permite cortar a saída de vídeo, o que significa produzir uma subárea retangular do vídeo original. Esta 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 é produzir o vídeo completo. |
avatarConfig.videoCrop.topLeft | O vértice superior esquerdo do retângulo para corte de vídeo. Esta propriedade tem dois campos x e y, para definir a posição horizontal e vertical do vértice. Esta propriedade é necessária quando properties.videoCrop é definido. |
avatarConfig.videoCrop.bottomRight | O vértice inferior direito do retângulo para corte de vídeo. Esta propriedade tem dois campos x e y, para definir a posição horizontal e vertical do vértice. Esta propriedade é necessária quando properties.videoCrop é definido. |
avatarConfig.subtitleType | O tipo de legenda para o 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 fundo usando a avatarConfig.backgroundImage propriedade. O valor da propriedade deve ser uma URL apontando para a imagem desejada. Esta propriedade é opcional. |
avatarConfig.backgroundColor | Cor de fundo do vídeo do avatar, que é uma cadeia de caracteres no formato #RRGGBBAA. Nesta string: RR, GG, BB e AA significam os canais vermelho, verde, azul e alfa, com intervalo de valores hexadecimais 00~FF. O canal alfa controla a transparência, com valor 00 para transparente, valor FF para não transparente e valor entre 00 e FF para semitransparente. Essa propriedade é opcional e o valor padrão é #FFFFFFFF (branco). |
saídas.resultado | A localização do arquivo de resultado da síntese em lote, que é um arquivo de vídeo contendo o avatar sintetizado. Esta propriedade é somente leitura. |
propriedades. DurationInMilliseconds | A duração da saída de vídeo em milissegundos. Esta propriedade é somente leitura. |
Propriedades do trabalho de síntese em lote
A tabela a seguir descreve as propriedades do trabalho de síntese em lote.
Property | Description |
---|---|
createdDateTime | A data e a hora em que o trabalho de síntese em lote foi criado. Esta propriedade é somente leitura. |
descrição | A descrição da síntese do lote. Esta propriedade é opcional. |
ID | O ID do trabalho de síntese em lote. Esta propriedade é somente leitura. |
lastActionDateTime | A data e hora mais recentes em que o valor da propriedade status foi alterado. Esta propriedade é somente leitura. |
propriedades | Um conjunto definido de definições de configuração de síntese em lote opcionais. |
propriedades.destinationContainerUrl | Os resultados da síntese em lote podem ser armazenados em um contêiner gravável do Azure. Se você não especificar um URI de contêiner com token SAS (assinaturas de acesso compartilhado), o serviço de Fala armazenará os resultados em um contêiner gerenciado pela Microsoft. Não há suporte para SAS com políticas de acesso armazenado. Quando o trabalho de síntese é excluído, os dados do resultado também são excluídos. Essa propriedade opcional não é incluída na resposta quando você recebe o trabalho de síntese. |
propriedades.timeToLiveInHours | Uma duração em horas após a criação do trabalho de síntese, quando os resultados da síntese serão automaticamente excluídos. O tempo máximo de vida é de 744 horas. A data e a hora da exclusão automática, para trabalhos de síntese com um status de "Succeeded" ou "Failed" é calculada como a soma das propriedades lastActionDateTime e timeToLive. Caso contrário, você pode chamar o método de síntese de exclusão para remover o trabalho mais cedo. |
status | O status de processamento da síntese em lote. O status deve progredir de "NotStarted" para "Running" e, finalmente, para "Succeeded" ou "Failed". Esta propriedade é somente leitura. |
Propriedades de conversão de texto em fala
A tabela a seguir descreve as propriedades de conversão de texto em fala.
Property | Description |
---|---|
customVoices | Uma voz neural personalizada está associada a um nome e sua ID de implantação, assim: "customVoices": {"your-custom-voice-name": "502ac834-6537-4bc3-9fd6-140114daa66d"} Você pode usar o nome de voz em seu synthesisConfig.voice quando inputKind está definido como "PlainText", ou dentro do texto SSML de entradas quando inputKind está definido como "SSML".Esta 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. |
Insumos | O texto simples ou SSML a ser sintetizado. Quando o inputKind estiver definido como "PlainText", forneça texto sem formatação como mostrado aqui: "inputs": [{"content": "The rainbow has seven colors."}]. Quando o inputKind estiver definido como "SSML", forneça texto na Speech Synthesis Markup Language (SSML) como mostrado aqui: "inputs": [{"content": "<speak version=''1.0''' xml:lang=''en-US'''voice>< xml:lang=''en-US''' xml:gender=''Female''' name=''en-US-AvaMultilingualNeural'''O> arco-íris tem sete cores."}]. Inclua até 1.000 objetos de texto se quiser vários arquivos de saída de vídeo. Aqui está um exemplo de texto de entrada que deve ser sintetizado em dois arquivos de saída de vídeo: "inputs": [{"content": "synthesize this to a file"},{"content": "synthesize this to another file"}]. 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). Aqui está 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 lote. Essa propriedade não é incluída na resposta quando você recebe o trabalho de síntese. |
propriedades.faturaçãoDetalhes | O número de palavras que foram processadas e faturadas por vozes customNeural versus neurais (pré-construídas). Esta propriedade é somente leitura. |
synthesisConfig | As definições de configuração a serem usadas para síntese em lote de texto sem formatação. Esta propriedade só é aplicável quando inputKind está definido como "PlainText". |
synthesisConfig.pitch | O tom da saída de áudio. Para obter informações sobre os valores aceitos, consulte a tabela de ajuste de prosódia na documentação SSML (Speech Synthesis Markup Language). Os valores inválidos são ignorados. Esta propriedade opcional só é aplicável quando inputKind está definido como "PlainText". |
synthesisConfig.rate | A taxa da saída de áudio. Para obter informações sobre os valores aceitos, consulte a tabela de ajuste de prosódia na documentação SSML (Speech Synthesis Markup Language). Os valores inválidos são ignorados. Esta propriedade opcional só é aplicável quando inputKind está definido como "PlainText". |
synthesisConfig.style | Para algumas vozes, você pode ajustar o estilo de fala para expressar diferentes emoções, como alegria, empatia e calma. Você pode otimizar a voz para diferentes cenários, como atendimento ao cliente, noticiário e assistente de voz. Para obter informações sobre os estilos disponíveis por voz, consulte Estilos e funções de voz. Esta propriedade opcional só é aplicável quando inputKind está definido como "PlainText". |
synthesisConfig.voice | A voz que fala a saída de áudio. Para obter informações sobre as vozes neurais pré-construídas disponíveis, consulte Suporte de idioma e voz. Para usar uma voz personalizada, você deve especificar um mapeamento de voz e ID de implantação personalizado válido na propriedade customVoices. Esta 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 de ajuste de prosódia na documentação SSML (Speech Synthesis Markup Language). Os valores inválidos são ignorados. Esta propriedade opcional só é aplicável quando inputKind está definido como "PlainText". |
inputKind | Indica se a propriedade de texto de entrada deve ser texto sem formatação ou SSML. Os possíveis valores 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 é necessária. |
Como editar o plano de fundo
A API de síntese de lote de avatar atualmente não suporta a configuração de vídeos de fundo; ele só suporta imagens de fundo estáticas. No entanto, se você quiser adicionar um plano de fundo para o seu vídeo durante a pós-produção, você pode gerar vídeos com um fundo transparente.
Para definir uma imagem de fundo estática, use a avatarConfig.backgroundImage
propriedade e especifique uma URL apontando para a imagem desejada. Além disso, você pode definir a cor de fundo do vídeo do avatar usando a avatarConfig.backgroundColor
propriedade.
Para gerar um vídeo de fundo transparente, você deve definir as seguintes propriedades para os valores necessários na solicitação de síntese em lote:
Property | Valores necessários para transparência de fundo |
---|---|
propriedades.videoFormat | WebM |
propriedades.videoCodec | VP9 |
propriedades.backgroundColor | #00000000 (ou transparent ) |
Clipchamp é um exemplo de uma ferramenta de edição de vídeo que suporta o vídeo de fundo transparente gerado pela API de síntese em lote.
Alguns softwares de edição de vídeo não suportam o formato diretamente e suportam apenas .mov
a entrada de vídeo de fundo transparente como o webm
Adobe Premiere Pro. Nesses casos, você primeiro precisa converter o formato de vídeo de webm
para .mov
com uma ferramenta como FFMPEG.
Linha de comando FFMPEG:
ffmpeg -vcodec libvpx-vp9 -i <input.webm> -vcodec png -pix_fmt rgba metadata:s:v:0 alpha_mode="1" <output.mov>
FFMPEG pode ser baixado ffmpeg.org. Substitua <input.webm>
e <output.mov>
pelo caminho local e nome do arquivo na linha de comando.