Skip to main content

三、使用Ollama进行翻译

Ollama 实现以下功能:

  1. 获取 Ollama 模型列表:在脚本开始时,连接到本地 Ollama 服务,获取可用的模型列表,并让用户选择一个用于翻译。
  2. 选择目标翻译语言:让用户从中(中文)、日(日文)、英(英文)、韩(韩文)四种语言中选择一个作为翻译的目标语言。
  3. 翻译识别内容:将 FunASR 识别出的文本发送给选定的 Ollama 模型进行翻译。
  4. 逐行打印结果:在控制台清晰地打印出识别的原文和 Ollama翻译后的译文。

前提条件:

  • FunASR API 服务正在运行:确保您之前的 funasr_api_service.py Flask 应用正在运行。
  • Ollama 服务正在运行:确保您的本地 Ollama 服务正在运行,并且可以通过 http://localhost:11434 访问。
  • Ollama 中有可用的模型:确保您的 Ollama 中至少有一个可以执行翻译任务的模型(例如 llama3, qwen, mistral 等,具体取决于您的 Ollama 设置)。
  • Python 库sounddevice, numpy, requests 仍然是必需的。

关于“逐行打印”: 脚本会将 FunASR 返回的整个文本块作为“原文”,然后将整个文本块发送给 Ollama 进行翻译,得到“译文”。然后会像下面这样打印:


原文:
[这里是 FunASR 识别出的一段或多段文字]

译文 ([目标语言]):
[这里是 Ollama 翻译后的文字]

  

  1. Ollama 配置和函数
    • OLLAMA_API_URL:定义了 Ollama API 的基础地址。
    • SUPPORTED_LANGUAGES:定义了支持的目标翻译语言及其显示名称。
    • get_ollama_models():从 Ollama 获取可用模型列表。
    • select_ollama_model():让用户从列表中选择一个模型。
    • select_target_language():让用户选择目标翻译语言。
    • translate_text_with_ollama():核心函数,用于将文本发送给 Ollama 进行翻译。它会构建一个合适的提示。
  2. 主逻辑 (main) 修改
    • 在开始监听麦克风之前,会先调用上述函数让用户选择 Ollama 模型和目标翻译语言。
    • 选择结果存储在全局变量 selected_ollama_modeltarget_language_name / selected_target_language_code 中。
  3. 处理和翻译流程
    • save_and_send_audio_to_funasr():在从 FunASR 获得识别结果后,调用新的 process_transcription_and_translate() 函数。
    • process_transcription_and_translate():打印 FunASR 的原文,然后调用 translate_text_with_ollama() 获取译文,并打印译文。
  4. 错误处理:为 Ollama API 的调用添加了连接错误、请求错误和超时处理。

运行前的准备:

  • 启动 FunASR API 服务python funasr_api_service.py (假设您有这个服务脚本)。
  • 启动 Ollama 服务:确保 Ollama 正在运行,并且您已经拉取了至少一个可以用于翻译的模型 (例如 ollama pull llama3)。
  • 安装依赖pip install sounddevice numpy requests

现在,当您运行此脚本时,它会先让您配置 Ollama 模型和翻译语言,然后才开始监听麦克风进行识别和翻译。