三、使用Ollama进行翻译
Ollama 实现以下功能:
- 获取 Ollama 模型列表:在脚本开始时,连接到本地 Ollama 服务,获取可用的模型列表,并让用户选择一个用于翻译。
- 选择目标翻译语言:让用户从中(中文)、日(日文)、英(英文)、韩(韩文)四种语言中选择一个作为翻译的目标语言。
- 翻译识别内容:将 FunASR 识别出的文本发送给选定的 Ollama 模型进行翻译。
- 逐行打印结果:在控制台清晰地打印出识别的原文和 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 翻译后的文字]
- Ollama 配置和函数:
OLLAMA_API_URL
:定义了 Ollama API 的基础地址。SUPPORTED_LANGUAGES
:定义了支持的目标翻译语言及其显示名称。get_ollama_models()
:从 Ollama 获取可用模型列表。select_ollama_model()
:让用户从列表中选择一个模型。select_target_language()
:让用户选择目标翻译语言。translate_text_with_ollama()
:核心函数,用于将文本发送给 Ollama 进行翻译。它会构建一个合适的提示。
- 主逻辑 (
main
) 修改:- 在开始监听麦克风之前,会先调用上述函数让用户选择 Ollama 模型和目标翻译语言。
- 选择结果存储在全局变量
selected_ollama_model
和target_language_name
/selected_target_language_code
中。
- 处理和翻译流程:
save_and_send_audio_to_funasr()
:在从 FunASR 获得识别结果后,调用新的process_transcription_and_translate()
函数。process_transcription_and_translate()
:打印 FunASR 的原文,然后调用translate_text_with_ollama()
获取译文,并打印译文。
- 错误处理:为 Ollama API 的调用添加了连接错误、请求错误和超时处理。
运行前的准备:
- 启动 FunASR API 服务:
python funasr_api_service.py
(假设您有这个服务脚本)。 - 启动 Ollama 服务:确保 Ollama 正在运行,并且您已经拉取了至少一个可以用于翻译的模型 (例如
ollama pull llama3
)。 - 安装依赖:
pip install sounddevice numpy requests
。
现在,当您运行此脚本时,它会先让您配置 Ollama 模型和翻译语言,然后才开始监听麦克风进行识别和翻译。
No Comments