1. 引言
OpenAI及其项目Whisper简介
OpenAI,作为人工智能领域的先锋,一直致力于推动技术的创新和普及。Whisper是他们最新推出的一款强大的语音识别工具,它不仅能准确地转录语音,还能在多种语言之间进行实时翻译,这在当前的语音识别技术中是非常罕见的,支持大部分语言,支持中文。
2. Whisper项目概述
Whisper的功能和应用场景
Whisper是一种先进的语音识别工具,能够处理大量的音视频数据并将其转换为文本。它不仅适用于通用的语音转录任务,还能在多语言环境下工作,使其在全球化的应用场景下尤为重要。例如,在多国语言的会议记录、跨文化交流、甚至在自动字幕生成等方面都有巨大的应用潜力。
为什么选择Whisper
选择Whisper的理由包括它的高精度、多语言支持能力以及开源属性。作为一个开源项目,用户可以自由地定制和扩展Whisper,使其适应特定的需求和场景。此外,Whisper背后强大的AI算法保证了其在处理复杂和各种口音的语音数据方面的优秀性能。
本地部署Whisper,免去调用第三方语音识别接口的费用。
3. 环境准备和要求
推荐linux系统,采用docker方式部署。
配置要求
模型级别 | 参数 | 仅英文模型名称 | 多语言模型名称 | 机器内存要求 | 速度 |
---|---|---|---|---|---|
tiny | 39 M | tiny.en |
tiny |
~1 GB | ~32x |
base | 74 M | base.en |
base |
~1 GB | ~16x |
small | 244 M | small.en |
small |
~2 GB | ~6x |
medium | 769 M | medium.en |
medium |
~5 GB | ~2x |
large | 1550 M | N/A | large |
~10 GB | 1x |
可根据实际情况,选择对应的模型。内存支持GPU、CPU两种。模型参数越高,识别率越高。
所需软件和工具
Docker: 对于容器化部署,Docker是一个很好的选择。
4.部署步骤
1.根据机器配置大小,选择对应的模型
根据3中的模型配置建议,选择对应的模型级别。
2.docker部署
cpu部署脚本:
docker pull onerahmet/openai-whisper-asr-webservice:latest
docker run -d -p 9000:9000 -e ASR_MODEL=base -e ASR_ENGINE=openai_whisper onerahmet/openai-whisper-asr-webservice:latest
gpu部署脚本:
docker pull onerahmet/openai-whisper-asr-webservice:latest-gpu
docker run -d --gpus all -p 9000:9000 -e ASR_MODEL=base -e ASR_ENGINE=openai_whisper onerahmet/openai-whisper-asr-webservice:latest-gpu
请注意将脚本中ASR_MODEL的值替换成1中选好的模型。
3.浏览器访问测试
部署成功后,浏览器打开http://{ip}:9000/docs#/Endpoints/asr_asr_post API测试地址,请将{ip}替换成真实服务器IP。如果地址无法访问,请在服务器防火墙中临时开放9000端口,或者配置nginx域名反向代理9000端口,直接使用域名访问。
打开测试地址后,/asr地址点击“Try it out”。
调整测试参数:
(1)音频文件如果是中文,在language项选择”zh“。
(2)audio_file选择本地的一个音视频文件。支持音视频格式:amr、mp3、mp4、mpweg、mpga、m4a、wav、webm
(3)output选择输出格式,默认txt格式。支持格式:txt、srt、json、vtt等,能够输出字幕srt格式。
调整参数后点击【Execute】,返回响应response将输出结果
下面是我上传一个amr录音文件后返回的示例:
以下是java程序调用录音转文字接口的一个示例代码:
private String audioToTextByLocalWhisper(String fullPath) {
HttpRequest request = new HttpRequest("http://127.0.0.1:9000/asr?encode=true&task=transcribe&language=zh&word_timestamps=false&output=txt");
request.method(Method.POST);
request.form("audio_file",new File(fullPath));
String body = request.execute().body();
return body;
}
代码中调用参数fullPath改成音视频文件磁盘全路径,使用了hutool的工具包。
5.部署建议
如果机器配置较低,比如2核4G且无GPU,不建议部署该项目用于识别中文,识别率不高,经常会将识别成同音字。高配机器推荐部署此模型,large模型识别率高,大规模识别任务时可考虑部署,节省第三方接口费用。
6.小结
总的来说,Whisper是一个强大的工具,特别适合于那些需要高精度和多语言支持的复杂语音识别任务。