Condividi tramite


Come usare la traduzione video

Nota

Questa funzionalità è attualmente in anteprima pubblica. Questa anteprima viene fornita senza un contratto di servizio e non è consigliabile per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.

Questo articolo illustra come usare la traduzione video di Voce di Azure AI di Azure in Studio.

Tutto quello che serve per iniziare è un video originale. Verificare se la traduzione video supporta la lingua e l'area geografica.

Creare un progetto di traduzione video

Per creare un progetto di traduzione video, seguire questa procedura:

  1. Accedere a Speech Studio.

  2. Selezionare la sottoscrizione e la risorsa Voce da usare.

  3. Selezionare Traduzione video.

  4. Nella pagina Crea e gestisci progetti selezionare Crea un progetto.

  5. Nella pagina Nuovo progetto selezionare Tipo di voce.

    Screenshot della selezione del tipo di voce nella pagina del nuovo progetto.

    È possibile selezionare Voce neurale predefinita o Voce personale per Tipo di voce. Per la voce neurale predefinita, il sistema seleziona automaticamente la voce predefinita più adatta associando la voce dell'altoparlante nel video con voci predefinite. Per la voce personale, il sistema offre un modello che genera una replica vocale di alta qualità in pochi secondi.

    Nota

    Per usare la voce personale, è necessario richiedere l'accesso.

  6. Caricare il file video trascinando e rilasciando il file video o selezionando il file manualmente.

    Screenshot del caricamento del file video nella pagina del nuovo progetto.

    Assicurarsi che il video sia in formato .mp4, inferiore a 500 MB e inferiore a 60 minuti.

  7. Specificare il Nome progetto e selezionare il Numero di relatori, la Lingua del video, Tradurre in lingua.

    Screenshot dell'offerta di informazioni video nella pagina del nuovo progetto.

    Se si desidera usare i propri file di sottotitolo, selezionare Aggiungi file di sottotitolo. È possibile scegliere di caricare il file del sottotitolo di origine o il file del sottotitolo di destinazione. Il file di sottotitoli può essere in formato WebVTT o JSON. È possibile scaricare un file VTT di esempio per il riferimento selezionando Scaricare il file VTT di esempio.

    Screenshot dell'aggiunta del file di sottotitolo nella pagina del nuovo progetto.

  8. Dopo aver esaminato le informazioni sui prezzi e il codice di comportamento, procedere con la creazione del progetto.

    Al termine del caricamento, è possibile controllare lo stato di elaborazione nella scheda del progetto.

    Dopo aver creato il progetto, è possibile selezionare il progetto per esaminare le impostazioni dettagliate e apportare modifiche in base alle preferenze.

Controllare e regolare le impostazioni vocali

Nella pagina dei dettagli del progetto, il progetto offre due schede tradotte e originali in Video, consentendo di confrontarle affiancate.

Sul lato destro del video è possibile visualizzare sia lo script originale che lo script tradotto. Passando il puntatore del mouse su ogni parte dello script originale, il video viene attivato per passare automaticamente al segmento corrispondente del video originale, mentre il passaggio del mouse su ogni parte dello script tradotto attiva il video per passare al segmento tradotto corrispondente.

È anche possibile aggiungere o rimuovere segmenti in base alle esigenze. Quando si vuole aggiungere un segmento, assicurarsi che il nuovo timestamp del segmento non si sovrapponga al segmento precedente e successivo e che l'ora di fine del segmento sia maggiore dell'ora di inizio. Il formato corretto del timestamp deve essere hh:mm:ss.ms. In caso contrario, non è possibile applicare le modifiche.

È possibile regolare l'intervallo di tempo degli script direttamente usando la forma d'onda audio sotto il video. Dopo aver selezionato Applica modifiche, verranno applicate le modifiche.

Se si riscontrano segmenti con un nome di voce "non identificata", potrebbe essere perché il sistema non è riuscito a rilevare accuratamente la voce, soprattutto nelle situazioni in cui le voci voce si sovrappongono. In questi casi, è consigliabile modificare manualmente il nome della voce.

Screenshot di un segmento con il nome della voce non identificato.

Per modificare la voce, selezionare Impostazioni voce per apportare alcune modifiche. Nella pagina Impostazioni voce è possibile modificare il tipo di voce, il sesso e la voce. Selezionare l'esempio vocale a destra di Voce per determinare la selezione vocale. Se si trova una voce mancante, è possibile aggiungere il nuovo nome vocale selezionando Aggiungi parlante. Dopo aver modificato le impostazioni, selezionare Aggiorna.

Screenshot della regolazione delle impostazioni vocali nella pagina delle impostazioni vocali.

Se si apportano modifiche più volte ma non sono state completate, è sufficiente salvare le modifiche apportate selezionando Salva. Dopo aver apportato tutte le modifiche, selezionare Applica modifiche per applicarle al video. L'addebito verrà effettuato solo dopo aver selezionato Applica modifiche.

Screenshot della selezione del pulsante Applica modifiche dopo aver apportato tutte le modifiche.

È possibile tradurre il video originale in una nuova lingua selezionando Nuova lingua. Nella pagina Traduci è possibile scegliere una nuova lingua tradotta e un nuovo tipo di voce. Dopo aver convertito il file video, viene creato automaticamente un nuovo progetto.

L'API REST di traduzione video facilita l'integrazione facile della traduzione video nelle applicazioni. Supporta il caricamento, la gestione e l'affinamento delle traduzioni video, con più iterazioni per un miglioramento continuo. Questo articolo illustra come usare la traduzione video tramite l'API REST.

Questo diagramma offre una panoramica generale del flusso di lavoro.

Diagramma del flusso di lavoro dell'API di traduzione video.

È possibile usare le operazioni API REST seguenti per la traduzione video:

Operazione Method Chiamata API REST
Creare una traduzione PUT /translations/{translationId}
Elencare le traduzioni GET /translations
Ottenere una traduzione in base all'ID traduzione GET /translations/{translationId}
Creare un'iterazione PUT /translations/{translationId}/iterations/{iterationId}
Elencare le iterazioni GET /translations/{translationId}/iterations
Ottenere un'iterazione in base all'ID di iterazione GET /translations/{translationId}/iterations/{iterationId}
Ottenere l'operazione in base all'ID operazione GET /operations/{operationId}
Eliminare una traduzione in base all'ID traduzione DELETE /translations/{translationId}

Per esempi di codice, vedere GitHub.

Questo articolo illustra i passaggi principali del processo API, tra cui la creazione di una traduzione, la creazione di un'iterazione, il controllo dello stato di ogni operazione, il recupero di un'iterazione in base all'ID di iterazione e l'eliminazione di una traduzione in base all'ID traduzione. Per informazioni dettagliate complete, vedere i collegamenti forniti per ogni API nella tabella.

Creare una traduzione

Per inviare una richiesta di traduzione video, è necessario costruire un percorso e un corpo della richiesta HTTP PUT in base alle istruzioni seguenti:

  • Specifica Operation-Id: Operation-Id deve essere univoco per ogni operazione. Garantisce che ogni operazione venga rilevata separatamente. Sostituire [operationId] con un ID operazione.

  • Specifica translationId: translationId deve essere univoco. Sostituire [translationId] con un ID di traduzione.

  • Impostare l'input richiesto: includere dettagli come sourceLocale, voiceKindtargetLocale, e videoFileUrl. Assicurarsi di avere l'URL del video da Archiviazione BLOB di Azure. Per le lingue supportate per la traduzione video, vedere le lingue di origine e di destinazione supportate. È possibile impostare voiceKind il parametro su PlatformVoice o PersonalVoice. Per PlatformVoice, il sistema seleziona automaticamente la voce predefinita più adatta associando la voce dell'altoparlante nel video con voci predefinite. Per PersonalVoice, il sistema offre un modello che genera una replica vocale di alta qualità in pochi secondi.

    Nota

    Per usare la voce personale, è necessario richiedere l'accesso.

  • Sostituire [YourResourceKey] con la chiave della risorsa Voce e [YourSpeechRegion] con l'area della risorsa Voce.

La creazione di una traduzione non avvia il processo di traduzione. È possibile iniziare a tradurre il video creando un'iterazione. L'esempio seguente è relativo alla shell di Windows. Assicurarsi di eseguire l'escape & con ^& se l'URL contiene &. Nel codice di esempio seguente si userà un URL video pubblico, che è possibile usare per i test personalizzati.

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

I dati creati tramite l'API non verranno visualizzati in Speech Studio e i dati tra l'API e Speech Studio non vengono sincronizzati.

Dovrebbe essere visualizzato un corpo della risposta nel formato seguente:

{
  "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"
}

La proprietà status deve passare da NotStarted stato, a Runninge infine a Succeeded o Failed. È possibile chiamare periodicamente l'API Get operation by operation ID finché lo stato restituito non è Succeeded o Failed. Questa operazione consente di monitorare lo stato di avanzamento del processo di traduzione.

Ottenere l'operazione in base all'ID operazione

Controllare lo stato di un'operazione specifica usando il relativo ID operazione. L'ID operazione è univoco per ogni operazione, quindi è possibile tenere traccia di ogni operazione separatamente.

Sostituire [YourResourceKey] con la chiave della risorsa Voce, [YourSpeechRegion] con l'area della risorsa Voce e [operationId] con l'ID operazione da controllare.

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" 

Dovrebbe essere visualizzato un corpo della risposta nel formato seguente:

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

Creare un'iterazione

Per iniziare a tradurre il video o aggiornare un'iterazione per una traduzione esistente, è necessario costruire un percorso di richiesta HTTP PUT e un corpo in base alle istruzioni seguenti:

  • Specifica Operation-Id: Operation-Id deve essere univoco per ogni operazione, ad esempio la creazione di ogni iterazione. Sostituire [operationId] con un ID univoco per questa operazione.
  • Specifica translationId: se vengono eseguite più iterazioni in una singola traduzione, l'ID di traduzione rimane invariato.
  • Specifica iterationId: iterationId deve essere univoco per ogni operazione. Sostituire [iterationId] con un ID di iterazione.
  • Impostare l'input richiesto: includere dettagli come speakerCount, subtitleMaxCharCountPerSegmentoexportSubtitleInVideowebvttFile . Nessun sottotitolo è incorporato nel video di output per impostazione predefinita.
  • Sostituire [YourResourceKey] con la chiave della risorsa Voce e [YourSpeechRegion] con l'area della risorsa Voce.

L'esempio seguente è relativo alla shell di Windows. Assicurarsi di eseguire l'escape & con ^& se l'URL contiene &.

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"  

Nota

Quando si crea un'iterazione, se sono già stati specificati i parametri facoltativi speakerCount, subtitleMaxCharCountPerSegmente exportSubtitleInVideo durante la creazione della traduzione, non è necessario specificarli di nuovo. I valori erediteranno dalle impostazioni di conversione. Dopo aver definito questi parametri durante la creazione di un'iterazione, i nuovi valori sostituiranno le impostazioni originali.

Il webvttFile parametro non è obbligatorio quando si crea la prima iterazione. Tuttavia, a partire dalla seconda iterazione, è necessario specificare il webvttFile parametro nel processo di iterazione. È necessario scaricare il file webvtt, apportare le modifiche necessarie e quindi caricarlo nell'archivio BLOB di Azure. È necessario specificare l'URL del BLOB nel codice curl.

I dati creati tramite l'API non verranno visualizzati in Speech Studio e i dati tra l'API e Speech Studio non vengono sincronizzati.

Il file di sottotitoli può essere in formato WebVTT o JSON. Se non si è certi di come preparare un file WebVTT, vedere i formati di esempio seguenti.


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.

Dovrebbe essere visualizzato un corpo della risposta nel formato seguente:

{
  "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"
}

È possibile usare operationId l'utente specificato e chiamare periodicamente l'API Get operation by operation ID finché lo stato restituito non è Succeeded o Failed. Questa operazione consente di monitorare lo stato di avanzamento della creazione del processo di iterazione.

Ottenere un'iterazione in base all'ID di iterazione

Per recuperare i dettagli di un'iterazione specifica in base al relativo ID, usare la richiesta HTTP GET. Sostituire [YourResourceKey] con la chiave della risorsa Voce, [YourSpeechRegion] con l'area della risorsa Voce, [translationId] con l'ID di traduzione da controllare e [iterationId] con l'ID iterazione da controllare.

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"  

Dovrebbe essere visualizzato un corpo della risposta nel formato seguente:

{
  "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"
}

Eliminare una traduzione in base all'ID traduzione

Rimuovere una traduzione specifica identificata da translationId. Questa operazione rimuove anche tutte le iterazioni associate a questa traduzione. Sostituire [YourResourceKey] con la chiave della risorsa Voce, [YourSpeechRegion] con l'area della risorsa Voce e [translationId] con l'ID di traduzione che si vuole eliminare. Se non viene eliminato manualmente, il servizio mantiene la cronologia delle traduzioni per un massimo di 31 giorni.

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" 

Le intestazioni della risposta includeranno HTTP/1.1 204 No Content se la richiesta di eliminazione ha avuto esito positivo.

Informazioni aggiuntive

Questa sezione fornisce i comandi curl per altre chiamate API che non sono descritte in dettaglio in precedenza. È possibile esplorare ogni API usando i comandi seguenti.

Elencare le traduzioni

Per elencare tutte le traduzioni video caricate ed elaborate nell'account della risorsa, effettuare una richiesta HTTP GET, come illustrato nell'esempio seguente. Sostituire YourResourceKey con la chiave della risorsa Voce e YourSpeechRegion con l'area della risorsa Voce.

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

Ottenere una traduzione in base all'ID traduzione

Questa operazione recupera informazioni dettagliate su una traduzione specifica, identificata dal relativo univoco translationId. Sostituire [YourResourceKey] con la chiave di risorsa Voce, [YourSpeechRegion] con l'area della risorsa Voce e [translationId] con l'ID di traduzione da controllare.

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" 

Elencare le iterazioni

Elencare tutte le iterazioni per una traduzione specifica. Questa richiesta elenca tutte le iterazioni senza informazioni dettagliate. Sostituire [YourResourceKey] con la chiave di risorsa Voce, [YourSpeechRegion] con l'area della risorsa Voce e [translationId] con l'ID di traduzione da controllare.

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"  

Codici di stato HTTP

La sezione descrive in dettaglio i codici di risposta HTTP e i messaggi dell'API REST di traduzione video.

HTTP 200 OK

HTTP 200 OK indica che la richiesta ha avuto esito positivo.

Errore HTTP 204

Un errore HTTP 204 indica che la richiesta ha avuto esito positivo, ma la risorsa non esiste. Ad esempio:

  • Si è tentato di ottenere o eliminare una traduzione che non esiste.
  • È stata eliminata una traduzione.

Errore HTTP 400

Ecco alcuni esempi che possono generare l'errore 400:

  • Le impostazioni locali di origine o di destinazione specificate non sono tra le impostazioni locali supportate.
  • Si è tentato di usare una risorsa Voce F0, ma l'area supporta solo il piano tariffario per le risorse Voce Standard.

Errore HTTP 500

L'errore interno del server HTTP 500 indica che la richiesta non è riuscita. Il messaggio di errore è riportato nel corpo della risposta.