비디오 번역을 사용하는 방법
참고 항목
이 기능은 현재 공개 미리 보기로 제공됩니다. 이 미리 보기는 서비스 수준 계약 없이 제공되며, 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다. 자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.
이 문서에서는 스튜디오에서 Azure AI 음성 동영상 번역을 사용하는 방법을 알아봅니다.
시작하기 위해서는 원본 비디오만 있으면 됩니다. 동영상 번역이 사용자의 언어 및 지역을 지원하는지 확인합니다.
동영상 번역 프로젝트 만들기
동영상 번역 프로젝트를 만들려면 다음 단계를 따릅니다.
Speech Studio에 로그인합니다.
작업할 구독 및 음성 리소스를 선택합니다.
동영상 번역을 선택합니다.
프로젝트 만들기 및 관리 페이지에서 프로젝트 만들기를 선택합니다.
새 프로젝트 페이지에서 음성 유형을 선택합니다.
음성 유형으로 미리 만들어진 인공신경망 음성 또는 개인 음성 또는 을 선택할 수 있습니다. 미리 빌드된 신경망 음성의 경우 시스템은 동영상 속 화자의 음성을 미리 빌드된 음성과 일치시켜 가장 적합한 미리 빌드된 음성을 자동으로 선택합니다. 개인 음성의 경우 시스템은 몇 초 안에 고품질 음성 복제를 생성하는 모델을 제공합니다.
참고 항목
개인 음성을 사용하려면 액세스 권한을 신청해야 합니다.
비디오 파일을 끌어서 놓거나 파일을 수동으로 선택하여 비디오 파일을 업로드합니다.
비디오가 .mp4 형식, 500MB 미만, 60분 미만인지 확인합니다.
프로젝트 이름을 입력하고 말하는 사람의 수, 비디오 언어, 번역할 언어를 선택합니다.
사용자 고유의 자막 파일을 사용하려면 자막 파일 추가를 선택합니다. 원본 자막 파일 또는 대상 자막 파일을 업로드하도록 선택할 수 있습니다. 자막 파일은 WebVTT 또는 JSON 형식일 수 있습니다. 샘플 VTT 파일 다운로드를 선택하여 참조용 샘플 VTT 파일을 다운로드할 수 있습니다.
가격 책정 정보와 사용 규정을 검토한 후 프로젝트 만들기를 진행합니다.
업로드가 완료되면 프로젝트 탭에서 처리 상태를 확인할 수 있습니다.
프로젝트를 만든 후에는 프로젝트를 선택하여 자세한 설정을 검토하고 기본 설정에 따라 조정할 수 있습니다.
음성 설정 확인 및 조정
프로젝트 세부 정보 페이지에서 프로젝트는 비디오 아래에서 번역됨과 원본의 탭 두 개를 제공하여 나란히 비교할 수 있습니다.
비디오의 오른쪽에서 원래 스크립트와 번역된 스크립트를 모두 볼 수 있습니다. 원래 스크립트의 각 부분을 마우스로 가리키면 원래 비디오의 해당 세그먼트로 자동으로 이동하도록 비디오가 트리거되고, 번역된 스크립트의 각 부분을 마우스로 가리키면 해당 번역된 세그먼트로 이동하도록 비디오가 트리거됩니다.
필요에 따라 세그먼트를 추가하거나 제거할 수도 있습니다. 세그먼트를 추가하려는 경우 새 세그먼트 타임스탬프가 이전 및 다음 세그먼트와 겹치지 않고 세그먼트 종료 시간이 시작 시간보다 커야 합니다. 타임스탬프의 올바른 형식은 hh:mm:ss.ms
입니다. 그렇지 않으면 변경 내용을 적용할 수 없습니다.
비디오 아래의 오디오 파형을 사용하여 스크립트의 시간 프레임을 직접 조정할 수 있습니다. 변경 내용 적용을 선택하면 조정이 적용됩니다.
"식별되지 않은" 음성 이름이 있는 세그먼트가 발생하는 경우 특히 화자 음성이 겹치는 경우 시스템에서 음성을 정확하게 감지할 수 없기 때문일 수 있습니다. 이러한 경우 음성 이름을 수동으로 변경하는 것이 좋습니다.
음성을 조정하려면 음성 설정을 선택하여 일부 내용을 변경합니다. 음성 설정 페이지에서 음성 유형, 성별 및 음성을 조정할 수 있습니다. 음성 오른쪽에 있는 음성 샘플을 선택하여 음성 선택을 결정합니다. 음성이 누락된 경우 화자 추가를 선택하여 새 음성 이름을 추가할 수 있습니다. 설정을 변경한 후 업데이트를 선택합니다.
여러 번 변경했지만 완료되지 않은 경우 저장을 선택하여 변경한 내용만 저장하면 됩니다. 모든 변경 내용을 적용한 후 변경 내용 적용을 선택하여 비디오에 적용합니다. 변경 내용 적용을 선택한 후에만 요금이 청구됩니다.
새 언어를 선택하여 원본 비디오를 새 언어로 번역할 수 있습니다. 번역 페이지에서 새로운 번역된 언어 및 음성 유형을 선택할 수 있습니다. 비디오 파일이 번역되면 새 프로젝트가 자동으로 만들어집니다.
관련 콘텐츠
비디오 번역 REST API는 애플리케이션에 원활한 비디오 번역 통합을 용이하게 합니다. 비디오 번역 업로드, 관리 및 구체화를 지원하며, 지속적인 개선을 위해 여러 번의 반복을 지원합니다. 이 문서에서는 REST API를 통해 비디오 번역을 활용하는 방법을 알아봅니다.
이 다이어그램에서는 워크플로의 개략적인 개요를 제공합니다.
비디오 번역에 다음 REST API 작업을 사용할 수 있습니다.
연산 | 메서드 | REST API 호출 |
---|---|---|
번역 만들기 | PUT |
/translations/{translationId} |
번역 나열 | GET |
/translations |
번역 ID로 번역 가져오기 | GET |
/translations/{translationId} |
반복 만들기 | PUT |
/translations/{translationId}/iterations/{iterationId} |
반복 나열 | GET |
/translations/{translationId}/iterations |
반복 ID로 반복 가져오기 | GET |
/translations/{translationId}/iterations/{iterationId} |
작업 ID별 작업 가져오기 | GET |
/operations/{operationId} |
번역 ID로 번역 삭제 | DELETE |
/translations/{translationId} |
코드 샘플은 GitHub를 참조하세요.
이 문서에서는 번역 만들기, 반복 만들기, 각 작업의 상태 확인, 반복 ID별 반복 가져오기, 번역 ID별 번역 삭제 등 API 프로세스의 기본 단계를 간략하게 설명합니다. 자세한 내용은 테이블의 각 API에 제공된 링크를 참조하세요.
번역 만들기
비디오 번역 요청을 제출하려면 다음 지침에 따라 HTTP PUT 요청 경로 및 본문을 생성해야 합니다.
지정
Operation-Id
:Operation-Id
각 작업에 대해 고유해야 합니다. 그러면 각 작업이 별도로 추적됩니다. 작업 ID로 대체[operationId]
합니다.지정
translationId
: 고유translationId
해야 합니다. 번역 ID로 대체[translationId]
합니다.필요한 입력을 설정합니다. 포함 세부 정보(예:
sourceLocale
,targetLocale
,voiceKind
및videoFileUrl
)를 포함합니다. Azure Blob Storage의 비디오 URL이 있는지 확인합니다. 동영상 번역이 지원되는 언어는 지원되는 원본 및 대상 언어를 참조하세요. 매개 변수를 둘 중 하나PlatformVoice
또는PersonalVoice
.로 설정할voiceKind
수 있습니다. 따라서PlatformVoice
시스템에서는 미리 빌드된 음성과 비디오의 스피커 음성을 일치시켜 가장 적합한 미리 빌드된 음성을 자동으로 선택합니다. 시스템에서PersonalVoice
는 몇 초 안에 고품질 음성 복제를 생성하는 모델을 제공합니다.참고 항목
개인 음성을 사용하려면 액세스 권한을 신청해야 합니다.
[YourResourceKey]
를 음성 리소스 키로 바꾸고,[YourSpeechRegion]
을 음성 리소스 지역으로 바꿉니다.
번역을 만들면 번역 프로세스가 시작되지 않습니다. 반복을 만들어 비디오 번역을 시작할 수 있습니다. 다음 예제는 Windows 셸용입니다. URL에 이스케 &
이프 ^&
가 포함되어 있는지 확인합니다.&
다음 샘플 코드에서는 사용자 고유의 테스트에 사용할 수 있는 공용 비디오 URL을 사용합니다.
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"
Important
API를 통해 만든 데이터는 Speech Studio에 표시되지 않으며 API와 Speech Studio 간의 데이터는 동기화되지 않습니다.
응답 본문은 다음 형식으로 표시되어야 합니다.
{
"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"
}
상태 속성은 상태Running
에서NotStarted
, 그리고 마지막으로 Succeeded
Failed
또는 .로 진행되어야 합니다. 반환된 상태가 될 때까지 작업 ID API별로 가져오기 작업을 주기적으로 호출할 Failed
수 있습니다Succeeded
. 이 작업을 통해 번역 프로세스 만들기의 진행률을 모니터링할 수 있습니다.
작업 ID별 작업 가져오기
작업 ID를 사용하여 특정 작업의 상태를 확인합니다. 작업 ID는 각 작업에 대해 고유하므로 각 작업을 개별적으로 추적할 수 있습니다.
Speech 리소스 키, [YourSpeechRegion]
Speech 리소스 지역 및 [operationId]
확인하려는 작업 ID로 바꿉 [YourResourceKey]
니다.
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"
응답 본문은 다음 형식으로 표시되어야 합니다.
{
"id": "createtranslation0920-1",
"status": "Running"
}
반복 만들기
비디오 번역을 시작하거나 기존 번역에 대한 반복을 업데이트하려면 다음 지침에 따라 HTTP PUT 요청 경로 및 본문을 생성해야 합니다.
- 지정
Operation-Id
:Operation-Id
각 반복을 만드는 등 각 작업에 대해 고유해야 합니다. 이 작업의 고유 ID로 대체[operationId]
합니다. - 지정
translationId
: 단일 번역에서 여러 반복을 수행하는 경우 변환 ID는 변경되지 않은 상태로 유지됩니다. - 지정
iterationId
:iterationId
각 작업에 대해 고유해야 합니다. 반복 ID로 바꿉[iterationId]
니다. - 필요한 입력을 설정합니다. 포함 세부 정보(예:
speakerCount
,subtitleMaxCharCountPerSegment
,exportSubtitleInVideo
또는webvttFile
. 기본적으로 출력 비디오에 자막이 포함되지 않습니다. [YourResourceKey]
를 음성 리소스 키로 바꾸고,[YourSpeechRegion]
을 음성 리소스 지역으로 바꿉니다.
다음 예제는 Windows 셸용입니다. URL에 이스케 &
이프 ^&
가 포함되어 있는지 확인합니다.&
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"
참고 항목
반복을 만들 때 선택적 매개 변수speakerCount
subtitleMaxCharCountPerSegment
를 이미 지정한 경우 번역 exportSubtitleInVideo
을 만드는 동안 다시 지정할 필요가 없습니다. 값은 변환 설정에서 상속됩니다. 반복을 만들 때 이러한 매개 변수가 정의되면 새 값이 원래 설정을 재정의합니다.
첫 번째 반복을 만들 때는 webvttFile
매개 변수가 필요하지 않습니다. 그러나 두 번째 반복부터 반복 프로세스에서 매개 변수를 webvttFile
지정해야 합니다. webvtt 파일을 다운로드하고, 필요한 편집을 한 다음, Azure Blob Storage에 업로드해야 합니다. curl 코드에서 Blob URL을 지정해야 합니다.
API를 통해 만든 데이터는 Speech Studio에 표시되지 않으며 API와 Speech Studio 간의 데이터는 동기화되지 않습니다.
자막 파일은 WebVTT 또는 JSON 형식일 수 있습니다. WebVTT 파일을 준비하는 방법을 잘 모르는 경우 다음 샘플 형식을 참조하세요.
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.
응답 본문은 다음 형식으로 표시되어야 합니다.
{
"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"
}
지정된 상태를 사용하고 operationId
반환 상태가 될 때까지 작업 ID API별로 가져오기 작업을 주기적으로 호출할 Failed
수 있습니다Succeeded
. 이 작업을 사용하면 반복 프로세스 만들기의 진행률을 모니터링할 수 있습니다.
반복 ID로 반복 가져오기
ID로 특정 반복의 세부 정보를 검색하려면 HTTP GET 요청을 사용합니다. Speech 리소스 키, [YourSpeechRegion]
Speech 리소스 영역, [translationId]
확인하려는 번역 ID 및 [iterationId]
확인하려는 반복 ID로 바꿉 [YourResourceKey]
니다.
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"
응답 본문은 다음 형식으로 표시되어야 합니다.
{
"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"
}
번역 ID로 번역 삭제
로 식별되는 특정 번역을 translationId
제거합니다. 또한 이 작업은 이 변환과 관련된 모든 반복을 제거합니다. Speech 리소스 키, [YourSpeechRegion]
Speech 리소스 지역 및 [translationId]
삭제하려는 번역 ID로 바꿉 [YourResourceKey]
니다. 수동으로 삭제하지 않으면 서비스는 최대 31일 동안 번역 기록을 유지합니다.
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"
삭제 요청이 성공한 경우 응답 헤더에 HTTP/1.1 204 No Content
가 포함됩니다.
추가 정보
이 섹션에서는 위에서 자세히 설명하지 않은 다른 API 호출에 대한 curl 명령을 제공합니다. 다음 명령을 사용하여 각 API를 탐색할 수 있습니다.
번역 나열
리소스 계정에서 업로드 및 처리된 모든 비디오 번역을 나열하려면 다음 예제와 같이 HTTP GET 요청을 만듭니다. YourResourceKey
를 음성 리소스 키로 바꾸고, YourSpeechRegion
을 음성 리소스 지역으로 바꿉니다.
curl -v -X GET -H "Ocp-Apim-Subscription-Key: [YourResourceKey]" "https://[YourSpeechRegion].api.cognitive.microsoft.com/videotranslation/translations?api-version=2024-05-20-preview"
번역 ID로 번역 가져오기
이 작업은 고유한 translationId
번역으로 식별되는 특정 번역에 대한 자세한 정보를 검색합니다. Speech 리소스 키, [YourSpeechRegion]
Speech 리소스 지역 및 [translationId]
확인하려는 번역 ID로 바꿉 [YourResourceKey]
니다.
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"
반복 나열
특정 번역에 대한 모든 반복을 나열합니다. 이 요청은 자세한 정보 없이 모든 반복을 나열합니다. Speech 리소스 키, [YourSpeechRegion]
Speech 리소스 지역 및 [translationId]
확인하려는 번역 ID로 바꿉 [YourResourceKey]
니다.
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"
HTTP 상태 코드
이 섹션에서는 비디오 번역 REST API의 HTTP 응답 코드 및 메시지를 자세히 설명합니다.
HTTP 200 OK
HTTP 200 OK는 요청이 성공했음을 나타냅니다.
HTTP 204 오류
HTTP 204 오류는 요청이 성공했지만 리소스가 존재하지 않음을 나타냅니다. 예시:
- 존재하지 않는 번역을 다운로드하거나 삭제하려고 했습니다.
- 번역을 삭제했습니다.
HTTP 400 오류
다음은 400 오류가 발생할 수 있는 예입니다.
- 지정한 원본 또는 대상 로캘이 지원되는 로캘에 속하지 않습니다.
- F0 음성 리소스를 사용하려고 했지만 해당 지역은 표준 음성 리소스 가격 책정 계층만 지원합니다.
HTTP 500 오류
HTTP 500 내부 서버 오류는 요청이 실패했음을 나타냅니다. 응답 본문에는 오류 메시지가 포함되어 있습니다.