----------------------------------------------------------------------------------------------------------------------
2024.06.20.부터 Rapidapi에서는 DeepL 지원이 종료된다고 합니다.
2023.08.16.부터 DeepL이 대한민국도 공식 지원을 하고 있습니다. DeepL API Free 개발자 등록을 하면 월 50만자까지 무료로 이용이 가능합니다.
DeepL Python Library도 제공하고 있으므로 어렵지 않게 구현이 가능하게 되었네요.~ subtitle-extractor에서는 DeepL API 파일 번역을 이용한 자동 번역을 추가했습니다. => 파일번역 방식은 횟수 제한이 있어서 사용하지 않는 것이 좋겠습니다. 대신 글자 단위 DeepL API 번역을 지원하는 subtitle-xtranslator.py 를 이용해 주시기 바랍니다.
API 사용법은 워낙 간단하여 따로 글을 쓰지 않을 예정입니다.
----------------------------------------------------------------------------------------------------------------------
DeepL의 번역은 자연스럽기로 유명합니다. 물론 완벽하지는 않지만, 현존하는 번역기 중 가장 우수하다는 것은 다들 인정하는 것 같습니다.
현재 3천 글자를 클립보드로 복사해서 번역한다든지, 문서(docx, pdf 등) 번역 등을 무료로 쓸 수 있기는 하지만 API를 통해 자동으로 번역하는 것은 우리 나라에 제공하지 않고 있습니다. 아시아에서는 싱가포르와 일본에서 서비스 중입니다.
우연히 각종 API의 허브인 곳에서 서비스한다고 해서 신청해서 테스트해 보았습니다. 아마 개별 각 서비스 제공사가 API를 함께 제공하는 모양입니다.
https://rapidapi.com/splintPRO/api/dpl-translator
신용카드를 등록을 해야 하며 저의 경우에는 0.5달러가 결제되었습니다. 보통 시험 결제 후 돌려주는데 아직 안 돌려주네요? 언젠가 줄 거라고 믿고^^ => 한참 후에 취소되었습니다.
- Basic 플랜은 무료라고 볼 수 있는데 월 30만자(초과 시 중지, 1회 호출당 최대 3천자)를 나누어서 100번 호출할 수 있습니다. 100회를 초과하면 0.003달러를 과금한다고 합니다.
- 그 다음 Pro 플랜은 4.99달러에 9백만자라서 느낌상 싸다는 생각이 듭니다. 구글이 월 50만자 무료에 이후 백만자당 20달러 요율로 계산하는 것에 비하면 싼 거겠죠?
바로 API key를 발급해 주는데 호출하는 방법도 일반적이었습니다.
제가 테스트한 코드는 다음과 같습니다. API key는 보안상 환경변수로 설정해서 넘겨주고, 구글 클라우드 번역과 달리 string의 list는 받지를 않고 plain text만 받네요.
# Set-Item -Path env:DEEPL_RAPIDAPI_KEY -Value "your_api_key"
def translate_text_deepl_rapidapi(audio, target, text):
try:
api_key = os.environ['DEEPL_RAPIDAPI_KEY']
print(_("[Info] DeepL-Rapidapi will be used."))
except KeyError:
print(_("[Error] Please set DEEPL_RAPIDAPI_KEY environment variables."))
sys.exit(1)
url = f'https://dpl-translator.p.rapidapi.com/translate'
text = text
target_language = target.upper()
source_language = audio.upper()
payload = {
'text': text,
'source': source_language,
'target': target_language
}
headers = {
"content-type": "application/json",
"X-RapidAPI-Key": api_key,
"X-RapidAPI-Host": "dpl-translator.p.rapidapi.com"
}
response = requests.post(url, json=payload, headers=headers)
if response.status_code != 200:
raise Exception(response.text)
data = response.json()
try:
translated_texts = data['text']
translated_list = translated_texts.split('\n')
except KeyError:
print(data)
sys.exit(1)
return translated_list
응답은 다음과 같이 왔습니다.
{
"text": "번역 예시 텍스트입니다.",
"alternative_texts": [
"다음은 번역 예시 텍스트입니다.",
"번역을 위한 예시 텍스트입니다.",
"번역을 위한 예시 텍스트입니다."
]
}
주 번역 이외에 대체하는 번역 3가지를 주는 것이 장점인 듯합니다.
다만 단점이 있습니다...
- 응답 시간이 꽤 길더군요. 3천 글자를 넘겼더니 3초~12초까지 걸렸습니다. 1천자 이하로 넘기면 더 빨리 응답하는데, 여기에서는 월 호출 횟수 제한이 있어서...
- 파일 번역이 안되는 것도 단점이 될 수 있겠습니다.
비디오/오디오 자막 추출하고 번역하는 것에 가끔씩 시간을 썼는데 덕분에 DeepL도 나름대로 같이 구현할 수 있었습니다.
https://github.com/sevengivings/subtitle-xtranslator
위 링크의 파이썬 스크립트는 Whisper 혹은 stable-ts도 같이 설치해서 사용하는 것으로 자세한 안내도 포함되어 있습니다. 설치할 때 ffmpeg은 별도로 설치를 해주어야 하고, 파이썬 관련 라이브러리는 pip install -r requirements.txt 를 통해 한번에 설치가 가능합니다. 결과적인 사용법은 어렵지 않은데 처음에는 좀 복잡하게 느껴지는 것이 사실입니다.
https://github.com/sevengivings/subtitle-extractor
만약 이미 Whisper로 추출된 자막을 갖고 있다면 위 링크에 있는 부속 스크립트를 사용할 수 있습니다. -> 예: subtitle-translator-deepl-rapidapi.py
- DeepL API를 간접적으로 유료(월 100회 호출, 합계 30만자 무료)로 사용할 수 있는 곳 - DeepL Translator API: Pricing & Cost (splintPRO) | RapidAPI 에서 Basic 플랜으로 가입하고 Apps를 하나 만들어서 api key를 얻어야 합니다.
- subtitle-translator-deepl-rapidapi.py는 자막(.srt)에서 시간정보와 자막을 분리한 후 짧은 자막(예: 1글자)을 제거하고 번역한 후 다시 합치는 기능을 갖고 있습니다.
- 사용법은 파워쉘에서는 Set-Item -Path env:DEEPL_RAPIDAPI_KEY -Value "your_api_key" 를 통해 환경 변수에 api key를 선언해 준 후, python .\subtitle-translator-deepl-rapidapi.py '.\입력파일.srt' 1 과 같이 해주면 됩니다. 숫자 1은 1글자짜리는 제거하겠다는 의미입니다.
'AI' 카테고리의 다른 글
DeepL번역으로 Youtube 유튜브 외국어 영상 자막 보기 (0) | 2023.09.16 |
---|---|
자막 생성 Whisper 미디엄 모델을 2GB VRAM NVIDIA 노트북에서 이용하기 (0) | 2023.08.27 |
stable-ts (Whisper)로 영상 자막을 파이썬 코드로 추출해 보기 및 DeepL 파일 번역 도우미 (73) | 2023.06.06 |