如何使用开源 AI 构建实时语音翻译器

按照本指南创建自己的语音翻译代理!

May 6, 2025

Why managing AI risk presents new challenges

Aliquet morbi justo auctor cursus auctor aliquam. Neque elit blandit et quis tortor vel ut lectus morbi. Amet mus nunc rhoncus sit sagittis pellentesque eleifend lobortis commodo vestibulum hendrerit proin varius lorem ultrices quam velit sed consequat duis. Lectus condimentum maecenas adipiscing massa neque erat porttitor in adipiscing aliquam auctor aliquam eu phasellus egestas lectus hendrerit sit malesuada tincidunt quisque volutpat aliquet vitae lorem odio feugiat lectus sem purus.

  • Lorem ipsum dolor sit amet consectetur lobortis pellentesque sit ullamcorpe.
  • Mauris aliquet faucibus iaculis vitae ullamco consectetur praesent luctus.
  • Posuere enim mi pharetra neque proin condimentum maecenas adipiscing.
  • Posuere enim mi pharetra neque proin nibh dolor amet vitae feugiat.

The difficult of using AI to improve risk management

Viverra mi ut nulla eu mattis in purus. Habitant donec mauris id consectetur. Tempus consequat ornare dui tortor feugiat cursus. Pellentesque massa molestie phasellus enim lobortis pellentesque sit ullamcorper purus. Elementum ante nunc quam pulvinar. Volutpat nibh dolor amet vitae feugiat varius augue justo elit. Vitae amet curabitur in sagittis arcu montes tortor. In enim pulvinar pharetra sagittis fermentum. Ultricies non eu faucibus praesent tristique dolor tellus bibendum. Cursus bibendum nunc enim.

Id suspendisse massa mauris amet volutpat adipiscing odio eu pellentesque tristique nisi.

How to bring AI into managing risk

Mattis quisque amet pharetra nisl congue nulla orci. Nibh commodo maecenas adipiscing adipiscing. Blandit ut odio urna arcu quam eleifend donec neque. Augue nisl arcu malesuada interdum risus lectus sed. Pulvinar aliquam morbi arcu commodo. Accumsan elementum elit vitae pellentesque sit. Nibh elementum morbi feugiat amet aliquet. Ultrices duis lobortis mauris nibh pellentesque mattis est maecenas. Tellus pellentesque vivamus massa purus arcu sagittis. Viverra consectetur praesent luctus faucibus phasellus integer fermentum mattis donec.

Pros and cons of using AI to manage risks

Commodo velit viverra neque aliquet tincidunt feugiat. Amet proin cras pharetra mauris leo. In vitae mattis sit fermentum. Maecenas nullam egestas lorem tincidunt eleifend est felis tincidunt. Etiam dictum consectetur blandit tortor vitae. Eget integer tortor in mattis velit ante purus ante.

  1. Vestibulum faucibus semper vitae imperdiet at eget sed diam ullamcorper vulputate.
  2. Quam mi proin libero morbi viverra ultrices odio sem felis mattis etiam faucibus morbi.
  3. Tincidunt ac eu aliquet turpis amet morbi at hendrerit donec pharetra tellus vel nec.
  4. Sollicitudin egestas sit bibendum malesuada pulvinar sit aliquet turpis lacus ultricies.
“Lacus donec arcu amet diam vestibulum nunc nulla malesuada velit curabitur mauris tempus nunc curabitur dignig pharetra metus consequat.”
Benefits and opportunities for risk managers applying AI

Commodo velit viverra neque aliquet tincidunt feugiat. Amet proin cras pharetra mauris leo. In vitae mattis sit fermentum. Maecenas nullam egestas lorem tincidunt eleifend est felis tincidunt. Etiam dictum consectetur blandit tortor vitae. Eget integer tortor in mattis velit ante purus ante.

如何使用开源 AI 构建实时语音翻译器

基于 GMI Cloud 软件工程师 Grace Deng 的 ODSC 网络研讨会

你可以看 原始网络研讨会录像在这里!

导言

想象一下,用英语说 “你好”,然后听到它用普通话说话——即刻、自然、有个性。这就是实时语音翻译可以做的事情,现在,有了开源工具和可扩展的基础架构,任何人都可以构建它。

在最近的一次ODSC网络研讨会中,GMI Cloud的软件工程师Grace Deng在不到一个小时的时间内完成了语音转换器的构建过程。本指南提炼了所使用的关键步骤和开源工具,因此您可以在几分钟内完成操作并部署自己的工具。

你要建造什么

您将创建一个具有以下功能的实时语音翻译器:

  • 🎤 通过麦克风进行实时语音输入
  • 📝 使用 Whisper 自动转录英语语音
  • 🌐 使用 LLaMA 3 将英文文本翻译成中文
  • 🔊 使用 XTTS 生成中文文本转语音
  • 🚀 与 Gradio 一起部署,用于基于浏览器的交互

用例:

  • 旅行助手
  • 无障碍支持
  • 会议直播翻译

你将要使用的工具

核心 AI 模型

  • 耳语 (ASR): 语音转文本

  • llama-3 (LLM): 从英文到中文的文本翻译

  • Coqui XTTS v2 (TTS): 支持多语言输出的语音合成

支持堆栈

  • 变压器: 用于 ASR 和 LLM 的 HuggingFace 管道
  • CUDA: 支持 ASR/TTS 加速的多 GPU
  • 格拉迪奥: 用于实时浏览器交互的快速 UI
  • GMI Cloud API: 用于大规模模型推理的托管端点

分步指南

📁 项目结构

voice_translator/
├── translator.py             # Main app script
├── audio.wav                 # Output audio file
├── requirements.txt          # Dependencies
└── README.md                 # Project documentation

1。设置您的环境

创建你的 Python 环境(Conda 或 venv),在 requirements.txt 文件中添加依赖关系,然后安装:

pip install -r requirements.txt

2。导入依赖关系

以下是导入的依赖项列表以及我们为什么需要它们。

  • gradio:用于构建基于 Web 的用户界面。
  • os:用于与文件系统交互。
  • torch:用于运行机器学习模型的核心 PyTorch 库。
  • 耳语:OpenAI 用于将语音转换为文本的 ASR 模型。
  • tts.api.tts:来自 Coqui-AI/TTS 库的 TTS 引擎,用于将文本转换为语音。
  • 请求:用于 HTTP 请求(例如,下载资源)。
  • 变形金刚:用于使用预训练模型(例如,用于翻译)的 HuggingFace 库。
  • numpy:通用数值计算。
  • librosa:音频处理和特征提取。
import gradio as gr
import os
import torch
import whisper as whisper_ai 
from TTS.api import TTS
import requests
import transformers
import numpy
import librosa 

3.准备 GPU 设备

本节为运行我们的硬件做好准备 语音转语音翻译器 通过为两项主要任务分配 GPU 设备:

  • Whisper ASR(自动语音识别) — 将口语转换为文本
  • 文字转语音 (TTS) — 将翻译后的文本合成口语音频

我们的目标是在单独的 GPU(如果可用)上运行每项任务,以获得最佳性能。

✅ 提示:在使用 Whisper 和 TTS 等深度学习模型时,将工作负载分布在多个 GPU 上可以显著提高运行时性能并减少延迟。您可以随意以适合您的设备的方式分散工作量。在这种情况下,我们使用最后两个 GPU。

num_gpus = torch.cuda.device_count()
if num_gpus >= 2:
    device_whisper = f"cuda:{num_gpus - 2}"
    device_tts = f"cuda:{num_gpus - 1}"
elif num_gpus == 1:
    device_whisper = device_tts = "cuda:0"
else:
    device_whisper = device_tts = "cpu"

print(f"Using {device_whisper} for Whisper ASR")
print(f"Using {device_tts} for Mozilla TTS")

4。Whisper ASR:语音转文本

在本节中,我们使用 OpenAI 准备自动语音识别 (ASR) 组件 Whisper 大型版 V3 模型,由 Hugging Face 变形金刚提供动力。

  • 🔁 管道:Whisper ASR 模型和处理器封装在一个管道中,该管道分块处理音频(每批处理最多 30 秒),以提高处理效率。
  • 🎧 预处理音频:在将音频输入到 ASR 模型之前,我们需要确保音频的格式正确。以下函数将音频重采样到 16kHz(如果还没有),如果是立体声,则将其转换为单声道,并确保其采用正确的数据类型进行处理。
  • 📝 转录音频:此函数将音频作为输入,对其进行预处理,然后通过 Whisper ASR 管道传递以生成转录。首先对音频进行重新采样和转换,然后进行标准化,最后发送到模型进行转录。
torch_dtype = torch.float32
model_id = "openai/whisper-large-v3"

transcribe_model = transformers.AutoModelForSpeechSeq2Seq.from_pretrained(
    model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
)
transcribe_model.to(device_whisper)

processor = transformers.AutoProcessor.from_pretrained(model_id)

pipe0 = transformers.pipeline(
    "automatic-speech-recognition",
    model=transcribe_model,
    tokenizer=processor.tokenizer,
    feature_extractor=processor.feature_extractor,
    max_new_tokens=128,
    chunk_length_s=30,
    batch_size=16,
    return_timestamps=True,
    torch_dtype=torch_dtype,
    device=device_whisper,
)

def preprocess_audio(audio):
    if audio.dtype != numpy.float32:
        audio = audio.astype(numpy.float32)
    sr = 16000
    y = librosa.resample(audio, orig_sr=sr, target_sr=sr)
    if len(y.shape) > 1:
        y = librosa.to_mono(y)
    return y

def transcribe_audio(audio) -> str:
    sr, y = audio
    y = preprocess_audio(y)
    y = y.astype(numpy.float32)
    y /= numpy.max(numpy.abs(y))
    output_text = pipe0(y, generate_kwargs={"language": "english","temperature": 0.5, "top_p": 0.9,})["text"]
    print(output_text)
    return output_text

5。用 llama-3 翻译

在这一步中,我们通过引入来弥合转录和语音合成之间的差距 文字翻译

🔁 使用 Llama-3 API 翻译文本

为了将英文成绩单翻译成中文,我们通过REST API(https://api.gmi-serving.com/v1/chat/completions)使用托管的LLama-3模型。此函数用 Python 封装对 API 的调用,并使用带有相应标头和有效负载的 POST 请求。

  • 授权标头包含持有者令牌(API 密钥)。
  • 请求负载指定:
    • 模型名称(meta-llama/llama-3.3-70b-instruct)
    • 一种系统消息,指示模型执行从英文到中文的翻译,并且仅返回翻译。
    • 包含输入文本的用户消息。
    • 确定性输出的温度 (0),代币限制为 500。

响应被解析为 JSON。如果响应有效且成功(status_code == 200),则该函数提取翻译后的消息并将其返回。否则,它会优雅地处理错误并记录有用的调试信息。

✅ 此时,你可以转录英语音频,将其翻译成中文,现在可以生成中文音频输出了。

def translate_text(text):
    url = "https://api.gmi-serving.com/v1/chat/completions"
    headers = {
        "Content-Type": "application/json",
        "Authorization": "<GMI_API_KEY>"
    }
    payload = {
        "model": "meta-llama/Llama-3.3-70B-Instruct",
        "messages": [
            {"role": "system", "content": "Translate the following English text into Chinese. Include the translation and nothing else."},
            {"role": "user", "content": text}
        ],
        "temperature": 0,
        "max_tokens": 500
    }
    response = requests.post(url, headers=headers, json=payload, verify=False)
    if response.status_code == 200:
        try:
            data = response.json()
            translated_text = data['choices'][0]['message']['content']
        except ValueError as e:
            print("Failed to parse JSON:", e)
        return translated_text
    else:
        print("Error with the request:", response.status_code, response.text)
    return "No translation provided"

6。Coqui XTTS:文字转语音

在本节中,我们通过从翻译后的文本中生成音频并将所有组件连接成一个功能,来完成语音到语音的翻译流程。

🔁 加载 TTS 模型

来自 Coqui TTS 的多语言 TTS 模型 xtts_v2 已加载并移动到指定的 TTS 设备 (device_tts),从而确保在可用时使用 GPU 进行快速推理。

🎙️ 将翻译后的文本转换为语音

我们定义了一个函数 text_to_seech,该函数接收翻译后的文本并从中生成语音文件。

  • 输出音频保存为 “audio.wav”。
  • 该功能使用预定义的扬声器语音 “Ana Florence”,输出语言设置为 “zh-cn”(中文)。
  • 来自 Coqui TTS 的 tts_to_file () 处理合成并将音频写入磁盘。
tts_model = TTS("tts_models/multilingual/multi-dataset/xtts_v2")
tts_model.to(device_tts)

def text_to_speech(text):
    output_path = "audio.wav"
    tts_model.tts_to_file(text=text, file_path=output_path, speaker="Ana Florence", language="zh-cn")
    return output_path

7。总结一下

🔄 端到端语音翻译管道

voice_to_voice () 函数集成了所有阶段:

  1. 输入:接收原始音频片段(用户的语音)。
  2. 检查:如果未提供音频,则返回 None。
  3. 转录:使用 Whisper 将音频转换为英语文本。
  4. 翻译:使用 LLaMA 将英文文本翻译成中文。
  5. 合成:根据翻译后的文本生成汉语口语音频片段。

最后,它返回生成的音频文件的路径。

✅ 你现在有了功能齐全的语音转换器:英语音频输入 → 中文音频输出!

def voice_to_voice(audio):
    if audio is None:  
        return gr.Audio(value=None)  
    output_audio = text_to_speech(translate_text(transcribe_audio(audio)))
    return output_audio

8。使用 Gradio 启动

在最后一步中,我们将语音到语音的翻译管道打包成一个用户友好的界面 格拉迪奥

🛠️ 定义 Gradio 接口

我们创建一个 Gr.Interface 实例来处理:

  • 输入:来自用户麦克风的实时音频(gr.Audio(sources= “麦克风”))。
  • 输出:以中文生成的音频,也以麦克风风格的音频小部件呈现以供播放。
  • 函数:前面定义的 voice_to_voice () 函数用作核心处理管道。
  • 元数据:
    • 标题: “语音转语音翻译器”
    • 描述:提供系统行为的分步摘要。
    • 直播模式:启用(live=True)以支持实时音频流。

🚀 启动应用程序

最后,我们将带有 share=True 的 .launch () 调用为:

  • 为应用程序启动本地服务器。
  • 生成一个公开 URL,这样您就可以在线与他人共享演示以测试或展示您的语音转换器。
# --- Gradio UI ---
demo = gr.Interface(
    fn=voice_to_voice,
    inputs=gr.Audio(sources="microphone"),
    outputs=gr.Audio(sources=["microphone"]),
    title="Voice-to-Voice Translator",
    description="🎤 Speak in English → 📝 Get Chinese text → 🔊 Listen to Chinese speech.",
    live=True
)

demo.launch(share=True)

来自 Grace 的专业提示

  • 在单独的 GPU 上运行 ASR 和 TTS 以降低延迟
  • 使用干净的 16kHz 音频输入来提高 Whisper 精度
  • 调整温度和提示以保证翻译的准确性
  • 使用 Coqui 语音克隆进行自定义扬声器或无障碍功能调整

资源

无限制地构建 AI

GMI Cloud 可以帮助您快速启动人工智能项目。有了支持 GPU 的 API 和托管终端节点,您无需仅仅为了实验而纠结基础架构。

加入 GMI Discord 社区 与其他建筑商联系并分享您的创作。

即刻开始

试用 GMI Cloud 算力服务,即刻体验高效的 AI 应用构建。

即刻开始
14 天试用
无长期合同约束
无需部署设置
按需 GPU

低至

$ 4.39 /GPU-小时

立即开始使用
预留 GPU

低至

$ 2.50 /GPU-小时

立即开始使用