Голосовой перевод на разные языки
Мандип Сингх (OpenAI)
21 окт. 2024 г.
Вы когда-нибудь хотели перевести подкаст на свой родной язык? Перевод и дубляж аудиоконтента могут сделать его более доступным для аудитории по всему миру. Благодаря новой модальности аудиовхода и аудиовыхода GPT-4o этот процесс стал проще, чем когда-либо.
Это руководство поможет вам перевести аудиофайл с английского на хинди с использованием API-интерфейса аудиомодальности GPT-4o от OpenAI.
GPT-4o упрощает процесс дубляжа аудиоконтента. Раньше приходилось конвертировать аудио в текст, а затем переводить текст на целевой язык, прежде чем конвертировать его обратно в аудио. Теперь, благодаря возможности GPT-4o «голос в голос», вы можете сделать это за один шаг с аудиовходом и аудиовыходом.
Примечание о семантике, используемой в этой кулинарной книге относительно языка и письменного сценария . Эти слова обычно используются взаимозаменяемо, хотя важно понимать разницу, учитывая поставленную задачу.
— Язык относится к устной или письменной системе общения. Например, хинди и маратхи — это разные языки, но оба используют письменность деванагари. Аналогично, английский и французский — это разные языки, но пишутся на латинице.
— Письменность относится к набору знаков или символов, используемых для записи языка. Например, сербский язык, традиционно использующий кириллицу, также использует латиницу.
Модальность аудиовхода и аудиовыхода GPT-4o упрощает дублирование звука с одного языка на другой с помощью одного вызова API.
1. Транскрибируйте исходный аудиофайл в скрипт исходного языка с помощью GPT-4o. Это необязательный шаг, который можно пропустить, если у вас уже есть транскрипция исходного аудиоконтента.
2. Дублируйте аудиофайл с исходного языка непосредственно на целевой язык.
3. Получите контрольные показатели перевода с помощью BLEU или ROUGE.
4. Интерпретируйте и улучшайте результаты, корректируя параметры подсказок на этапах 1–3 по мере необходимости.
Прежде чем начать, убедитесь, что ваш ключ API OpenAI настроен как переменная среды, а также установлены необходимые пакеты, как описано в ячейках кода ниже.
Шаг 1: Транскрибируйте аудио в исходный язык скрипта с помощью GPT-4o
Начнем с создания функции, которая отправляет аудиофайл в API GPT-4o OpenAI для обработки, используя конечную точку API завершения чата.
Функция process_audio_with_gpt_4o
принимает три входных параметра:
- Аудиофайл в кодировке base64 (base64_encoded_audio), который будет отправлен в модель GPT-4o.
- Желаемые выходные данные (например, текст или и текст, и аудио).
- Системная подсказка, которая инструктирует модель о том, как обрабатывать входные данные.
Функция отправляет запрос API на конечную точку чата/завершения OpenAI. Заголовки запроса включают ключ API для авторизации. Полезная нагрузка данных содержит тип модели ( gpt-4o-audio-preview
), выбранные модальности вывода и сведения об аудио, такие как тип и формат голоса (в данном случае «alloy» и «wav»). Она также включает системную подсказку и аудиофайл в кодировке base64 как часть сообщения «user». Если запрос API выполнен успешно (статус HTTP 200), ответ возвращается в формате JSON. Если возникает ошибка (статус не 200), он выводит код ошибки и сообщение.
Эта функция обеспечивает обработку звука с помощью API GPT-4o от OpenAI, позволяя выполнять такие задачи, как дубляж, транскрипция или перевод, на основе предоставленных входных данных.
# Make sure requests package is installed import requests import os import json # Load the API key from the environment variable api_key = os.getenv("OPENAI_API_KEY") def process_audio_with_gpt_4o(base64_encoded_audio, output_modalities, system_prompt): # Chat Completions API end point url = "https://api.openai.com/v1/chat/completions" # Set the headers headers = { "Content-Type": "application/json", "Authorization": f"Bearer {api_key}" } # Construct the request data data = { "model": "gpt-4o-audio-preview", "modalities": output_modalities, "audio": { "voice": "alloy", "format": "wav" }, "messages": [ { "role": "system", "content": system_prompt }, { "role": "user", "content": [ { "type": "input_audio", "input_audio": { "data": base64_encoded_audio, "format": "wav" } } ] } ] } request_response = requests.post(url, headers=headers, data=json.dumps(data)) if request_response.status_code == 200: return request_response.json() else: print(f"Error {request_response.status_code}: {request_response.text}") return
Используя функцию process_audio_with_gpt_4o
, мы сначала получим английскую транскрипцию исходного аудио. Вы можете пропустить этот шаг, если у вас уже есть транскрипция на исходном языке.
На этом этапе мы:
- Прочитайте WAV-файл и преобразуйте его в кодировку base64.
- Установите модальность вывода на [«текст»], так как нам нужна только текстовая транскрипция.
- Предоставьте системе подсказку, чтобы дать указание модели сосредоточиться на расшифровке речи и игнорировать фоновые шумы, такие как аплодисменты.
- Вызовите функцию process_audio_with_gpt_4o для обработки звука и возврата транскрипции.
import base64 audio_wav_path = "./sounds/keynote_recap.wav" # Read the WAV file and encode it to base64 with open(audio_wav_path, "rb") as audio_file: audio_bytes = audio_file.read() english_audio_base64 = base64.b64encode(audio_bytes).decode('utf-8') modalities = ["text"] prompt = "The user will provide an audio file in English. Transcribe the audio to English text, word for word. Only provide the language transcription, do not include background noises such as applause. " response_json = process_audio_with_gpt_4o(english_audio_base64, modalities, prompt) english_transcript = response_json['choices'][0]['message']['content'] print(english_transcript)
Здравствуйте и добро пожаловать на наш первый OpenAI DevDay. Сегодня мы запускаем новую модель GPT-4 Turbo. GPT-4 Turbo поддерживает до 128 000 токенов контекста. У нас есть новая функция под названием JSON mode, которая гарантирует, что модель будет отвечать действительным JSON. Теперь вы можете вызывать много функций одновременно. И она будет лучше выполнять инструкции в целом. Вы хотите, чтобы эти модели могли получать доступ к лучшим знаниям о мире, так же как и мы. Поэтому мы запускаем поиск на платформе. Вы можете переносить знания из внешних документов или баз данных во все, что вы создаете. GPT-4 Turbo имеет знания о мире до апреля 2023 года, и мы продолжим улучшать их со временем. DALL-E 3, GPT-4 Turbo с Vision и новая модель преобразования текста в речь — все это сегодня входит в API. Сегодня мы запускаем новую программу под названием Custom Models. С помощью пользовательских моделей наши исследователи будут тесно сотрудничать с компанией, чтобы помочь им создать отличную индивидуальную модель, специально для них и их варианта использования с помощью наших инструментов. Более высокие лимиты скорости. Мы удваиваем количество токенов в минуту для всех наших постоянных клиентов GPT-4, чтобы было проще делать больше, и вы сможете запрашивать изменения дополнительных лимитов скорости и квот непосредственно в настройках учетной записи API. А GPT-4 Turbo значительно дешевле, чем GPT-4, в 3 раза для токенов подсказок и в 2 раза для токенов завершения, начиная с сегодняшнего дня. Мы рады представить GPT. GPT — это адаптированные версии ChatGPT для определенной цели. И поскольку они объединяют инструкции, расширенные знания и действия, они могут быть более полезными для вас. Они могут лучше работать во многих контекстах и могут дать вам лучший контроль. Мы знаем, что многие люди, которые хотят создать GPT, не умеют писать код. Мы сделали так, чтобы вы могли программировать GPT, просто общаясь. Вы можете создавать частные GPT. Вы можете поделиться своими творениями публично с помощью ссылки для использования любым пользователем. Или, если вы используете ChatGPT Enterprise, вы можете создать GPT только для своей компании. А в конце этого месяца мы собираемся запустить GPT Store. Так что это GPT, и мы с нетерпением ждем, что вы создадите. Мы привносим ту же концепцию в API. API Assistant включает постоянные потоки, чтобы им не приходилось разбираться, как работать с длинной историей разговоров, встроенный поиск, интерпретатор кода, работающий интерпретатор Python в среде песочницы и, конечно же, улучшенный вызов функций. Поскольку интеллект интегрируется повсюду, у всех нас будут сверхспособности по требованию. Мы с нетерпением ждем, что вы все сделаете с этой технологией, и откроем для себя новое будущее, которое мы все вместе построим. Мы надеемся, что когда вы вернетесь в следующем году, то, что мы запускаем сегодня, будет выглядеть очень странно по сравнению с тем, что мы сейчас создаем для вас. Спасибо за все, что вы делаете. Спасибо, что пришли сюда сегодня.
Эта английская расшифровка послужит нам эталоном при сравнении дубляжа аудио на хинди на шаге 3.
Шаг 2. Дублируйте аудио с исходного языка на целевой язык с помощью GPT-4o
С помощью GPT-4o мы можем напрямую дублировать аудиофайл с английского на хинди и получать транскрипцию аудио на хинди за один вызов API. Для этого мы устанавливаем модальность вывода на["text", "audio"]
glossary_of_terms_to_keep_in_original_language = "Turbo, OpenAI, token, GPT, Dall-e, Python" modalities = ["text", "audio"] prompt = f"The user will provide an audio file in English. Dub the complete audio, word for word in Hindi. Keep certain words in English for which a direct translation in Hindi does not exist such as ${glossary_of_terms_to_keep_in_original_language}." response_json = process_audio_with_gpt_4o(english_audio_base64, modalities, prompt) message = response_json['choices'][0]['message']
В следующем фрагменте кода мы извлечем как транскрипцию на хинди, так и дублированный звук из ответа GPT-4o. Раньше это был бы многоэтапный процесс, включающий несколько вызовов API для первой транскрипции, затем перевода и, наконец, создания звука на целевом языке. С GPT-4o мы теперь можем сделать это за один вызов API.
# Make sure pydub is installed from pydub import AudioSegment from pydub.playback import play from io import BytesIO # Get the transcript from the model. This will vary depending on the modality you are using. hindi_transcript = message['audio']['transcript'] print(hindi_transcript) # Get the audio content from the response hindi_audio_data_base64 = message['audio']['data']
Добро пожаловать на наш первый день разработчиков OpenAI. Сегодня мы запускаем новую модель GPT-4 Turbo. GPT-4 Turbo теперь поддерживает контексты из 128 000 токенов. У нас есть новая функция под названием «Режим JSON», которая гарантирует, что модель ответит действительным JSON. Теперь вы можете вызывать несколько функций одновременно. И, как правило, он лучше выполняет инструкции. Вы хотите, чтобы эти модели имели доступ к более качественной информации о мире, и мы тоже. Вот почему мы запускаем Поиск на платформе. Вы можете использовать знания из внешних документов или баз данных во всем, что создаете. GPT-4 Turbo известен миру по состоянию на апрель 2023 года, и со временем мы продолжим его улучшать. DALL·E 3, GPT-4 Turbo с зрением и новая модель преобразования текста в речь доступны в API уже сегодня. Сегодня мы запускаем новую программу под названием Custom Models. Используя пользовательские модели, наши исследователи будут тесно сотрудничать с компанией, чтобы создать отличную пользовательскую модель специально для нее и ее варианта использования, используя наши инструменты. Более высокие лимиты ставок: мы удваиваем количество токенов в минуту для всех существующих клиентов GPT-4, чтобы им было легче делать больше. И вы сможете запрашивать изменения лимитов ставок и котировок непосредственно в настройках своей учетной записи API. А GPT-4 Turbo намного дешевле GPT-4; 3x для жетонов подсказки и 2x для жетонов завершения, начиная с сегодняшнего дня. Мы представляем ГПТС. GPT — это настроенные версии GPT чата, предназначенные для определенной цели. А поскольку они сочетают в себе инструкции, расширенные знания и действия, они могут оказаться для вас более полезными. Они могут лучше работать во многих социальных целях и дают вам лучший контроль. Мы знаем, что многие люди, которые хотят создать GPT, не обладают знаниями в области кодирования. Мы сделали это так, чтобы вы могли программировать GPT всего за один разговор. Вы можете создать частный GPT. Вы можете поделиться своим творением публично, предоставив ссылку, которую сможет использовать любой желающий. Или, если вы используете ChatGPT Enterprise, вы можете создать GPT специально для своей компании. А позже в этом месяце мы запустим магазин GPT. Итак, это GPT, и нам интересно посмотреть, что вы создадите. Мы привносим ту же концепцию в API. Вспомогательные API включают постоянные потоки, поэтому им не нужно разбираться, как обращаться с длинными историями разговоров. Также включены встроенный поиск, интерпретатор кода, работающий интерпретатор Python в среде песочницы и, конечно же, улучшенный вызов функций. По мере того, как интеллект будет интегрирован повсюду, у всех нас будут суперспособности по требованию. Мы рады видеть, что вы все можете сделать с этой технологией, и открыть для себя новое будущее, которое мы все создадим вместе. Мы надеемся, что вы приедете снова в следующем году, потому что то, что мы запустили сегодня, покажется очень незначительным с точки зрения того, что мы создаем для вас сейчас. Спасибо за все ваши методы. Спасибо, что заглянули сегодня.
Транскрибированный текст представляет собой комбинацию хинди и английского, представленных в соответствующих им скриптах: деванагари для хинди и латиница для английского. Такой подход обеспечивает более естественное звучание речи с правильным произношением слов обоих языков. Мы будем использовать модуль pydub
для воспроизведения аудио, как показано в коде ниже.
# Play the audio audio_data_bytes = base64.b64decode(hindi_audio_data_base64) audio_segment = AudioSegment.from_file(BytesIO(audio_data_bytes), format="wav") play(audio_segment)
Шаг 3. Получите контрольные показатели перевода (например, BLEU или ROUGE)
Мы можем оценить качество переведенного текста, сравнив его с эталонным переводом, используя такие оценочные показатели, как BLEU и ROUGE.
BLEU (Bilingual Evaluation Understudy) : измеряет перекрытие n-грамм между кандидатом и эталонным переводом. Диапазон оценок от 0 до 100, более высокие оценки указывают на лучшее качество.
ROUGE (Recall-Oriented Understudy for Gisting Evaluation) : Обычно используется для оценки резюмирования. Измеряет перекрытие n-грамм и самую длинную общую подпоследовательность между кандидатом и справочным текстом.
В идеале для точной оценки необходим справочный перевод (переведенная человеком версия) исходного текста. Однако разработка таких оценок может быть сложной, поскольку требует времени и усилий от двуязычных людей, владеющих обоими языками.
Альтернативой является транскрипция выходного аудиофайла с целевого языка обратно на исходный язык для оценки качества перевода с использованием GPT-4o.
# Translate the audio output file generated by the model back into English and compare with the reference text modalities = ["text"] prompt = "The user will provide an audio file in Hindi. Transcribe the audio to English text word for word. Only provide the language transcription, do not include background noises such as applause. " response_json = process_audio_with_gpt_4o(hindi_audio_data_base64, modalities, prompt) re_translated_english_text = response_json['choices'][0]['message']['content'] print(re_translated_english_text)
Добро пожаловать на наш первый день разработки OpenAI. Сегодня мы запускаем новую модель GPT-4 Turbo. GPT-4 Turbo теперь поддерживает контекст из 128 000 токенов. У нас есть новая функция, называемая режимом JSON, в которой модель будет отвечать через JSON. Теперь вы можете вызывать несколько функций одновременно, и она, как правило, будет лучше следовать инструкциям. Вы хотите, чтобы эта модель имела доступ к внешним базам данных знаний или документам, чтобы привнести знания в то, что вы создаете. GPT-4 Turbo обладает знаниями о мире до апреля 2023 года, и мы продолжим улучшать их со временем. DALL·E 3, GPT-4 Turbo с видением и новая модель преобразования текста в речь — все это доступно сегодня в API. Сегодня мы запускаем новую программу под названием пользовательские модели. Пользовательские модели будут тесно сотрудничать, чтобы создавать отличные пользовательские модели специально для вас и вашего варианта использования. Используя наши инструменты, мы удваиваем лимиты скорости для всех существующих клиентов GPT-4 до токенов в минуту. Вы сможете напрямую запрашивать изменения лимита скорости и квоты в настройках учетной записи API. А GPT-4 Turbo намного дешевле по сравнению с GPT-4, в 2 раза для токенов завершения, начиная с сегодняшнего дня. Мы представляем GPT. GPT — это пользовательские версии ChatGPT для определенной цели, и поскольку они включают инструкции с широкими возможностями знаний и действий, они могут помочь вам больше. Они могут лучше выполнять многие социальные задачи. Мы знаем, что многие люди, которые хотят создавать GPT, не умеют писать код. Мы создали его так, чтобы вы могли запрограммировать GPT всего одной строкой. Вы можете создать частный GPT. Вы можете опубликовать свое творение публично со ссылкой для использования любым пользователем, или, если у вас есть ChatGPT Enterprise, вы можете создавать GPT только для своей компании. Мы запустим магазин GPT. Итак, это GPT, и мы с нетерпением ждем того, что вы создадите. Мы вносим настройку в API. API помощи включает постоянные потоки, чтобы не приходилось разбираться, как взаимодействовать с историей из длинных разговоров. Встроенный ретривер, интерпретатор кода, работающий интерпретатор Python в среде песочницы и, конечно, улучшенный вызов функций. Поскольку интеллект интегрируется повсюду, у всех нас будут суперспособности по требованию. Мы с нетерпением ждем того, что вы сможете построить с помощью этой технологии и исследовать это новое будущее, которое мы все создаем вместе. Мы надеемся, что вы вернетесь в следующем году, потому что то, что мы строим для вас сейчас, заставит сегодняшний день казаться очень скромным в этом контексте. Спасибо всем за ваш подход. Спасибо, что вы здесь сегодня.
Переведя текст с аудиозаписи на хинди обратно на английский язык, мы можем оценить показатели, сравнив его с оригинальной английской транскрипцией.
# Make sure scarebleu package is installed import sacrebleu # Make sure rouge-score package is installed from rouge_score import rouge_scorer # We'll use the original English transcription as the reference text reference_text = english_transcript candidate_text = re_translated_english_text # BLEU Score Evaluation bleu = sacrebleu.corpus_bleu([candidate_text], [[reference_text]]) print(f"BLEU Score: {bleu.score}") # ROUGE Score Evaluation scorer = rouge_scorer.RougeScorer(['rouge1', 'rougeL'], use_stemmer=True) scores = scorer.score(reference_text, candidate_text) print(f"ROUGE-1 Score: {scores['rouge1'].fmeasure}") print(f"ROUGE-L Score: {scores['rougeL'].fmeasure}")
Оценка BLUE: 35,27656890256424 Оценка RED-1: 0,8148148148148149 Оценка RED-L: 0,6934156378600822
Шаг 4. Интерпретируйте и улучшайте результаты, корректируя параметры подсказок на шагах 1–3 по мере необходимости.
В этом примере оценки BLEU и ROUGE указывают на то, что качество перевода голоса находится между очень хорошим и отличным.
Интерпретация оценок BLEU: Хотя общепринятой шкалы не существует, некоторые интерпретации предполагают:
От 0 до 10: Низкое качество перевода; существенные ошибки и отсутствие беглости речи.
От 10 до 20: Низкое качество; частично понятно, но содержит много ошибок.
20–30: Удовлетворительное качество; передает общий смысл, но не хватает точности и беглости.
30–40: Хорошее качество; понятный и относительно точный с незначительными ошибками.
40–50: Очень хорошее качество; точный и беглый, с очень небольшим количеством ошибок.
50 и выше: Отличное качество; очень похоже на человеческий перевод.
Интерпретация оценок ROUGE: Интерпретация «хорошей» оценки ROUGE может варьироваться в зависимости от задачи, набора данных и домена. Следующие рекомендации указывают на хороший результат:
ROUGE-1 (перекрытие униграмм): результаты от 0,5 до 0,6 обычно считаются хорошими для заданий на абстрактное обобщение.
ROUGE-L (самая длинная общая подпоследовательность): оценки от 0,4 до 0,5 часто считаются хорошими, поскольку они отражают способность модели фиксировать структуру справочного текста.
Если оценка вашего перевода неудовлетворительна, рассмотрите следующие вопросы:
1. Правильно ли транскрибирован исходный звук?
Если транскрипция содержит ошибки, например, путаницу похожих по звучанию слов, вы можете предоставить глоссарий таких терминов в системной подсказке на шаге 1. Это помогает модели избежать неверных толкований и обеспечивает точную транскрипцию конкретных терминов.
2. Содержит ли исходный аудиофайл грамматические ошибки?
Если исходный звук содержит грамматические ошибки, рассмотрите возможность использования этапа постобработки с моделью GPT для уточнения транскрипции путем удаления грамматических ошибок и добавления соответствующей пунктуации. После этого вместо использования модальности аудиовхода и аудиовыхода GPT-4o вы можете использовать исправленную транскрипцию с модальностью текстового входа и аудиовыхода GPT-4o для генерации аудио на целевом языке.
3. Есть ли слова, которые имеет смысл сохранить в исходном языке?
Некоторые термины или концепции могут не иметь подходящего перевода на целевой язык или могут быть лучше поняты в их исходной форме. Пересмотрите свой glossary_of_terms_to_keep_in_original_language
и включите любые такие термины, чтобы сохранить ясность и контекст.
Заключение
Подводя итог, эта кулинарная книга предлагает понятный, пошаговый процесс перевода и дублирования аудио, делая контент более доступным для глобальной аудитории. Используя возможности ввода и вывода аудио GPT-4o, перевод и дублирование аудиофайлов с одного языка на другой становится намного проще. Наш пример был сосредоточен на переводе аудиофайла с английского на хинди.
Процесс можно разбить на следующие этапы:
1. Транскрипция: получение транскрипции аудиозаписи исходного языка в сценарий исходного языка с использованием текстовой модальности GPT-4o.
2. Дубляж: прямая дублировка аудиофайла на целевой язык с использованием аудиомодальности GPT-4o.
3. Сравнительное качество перевода: оцените точность перевода с помощью оценок BLEU или ROUGE по сравнению с эталонным текстом.
4. Оптимизируйте процесс: при необходимости отрегулируйте параметры подсказок, чтобы улучшить результаты транскрипции и дубляжа.
В этом руководстве также подчеркивается важное различие между «языком» и «сценарием» — терминами, которые часто путают, но которые имеют важное значение в работе переводчика. Язык относится к системе общения, устной или письменной, в то время как сценарий — это набор символов, используемых для записи языка. Понимание этого различия жизненно важно для эффективного перевода и дубляжа.
Используя методы из этой кулинарной книги, вы сможете переводить и дублировать широкий спектр контента — от подкастов и обучающих видео до полнометражных фильмов — на несколько языков. Этот метод применим в таких отраслях, как развлечения, образование, бизнес и глобальная коммуникация, что позволяет создателям расширить охват различных языковых аудиторий.