语音转文本基准测试
由加拿大温哥华的 Picovoice 制作
这个仓库是一个用于对比不同语音转文本引擎的简洁可扩展框架。
目录
数据
指标
词错误率
词错误率(WER)是参考文本中的词与语音转文本引擎输出的词之间的编辑距离与参考文本中词数的比率。
核心小时
核心小时指标用于评估语音转文本引擎的计算效率,表示处理一小时音频所需的CPU小时数。核心小时数值越低的语音转文本引擎计算效率越高。我们省略了云端引擎的这项指标。
模型大小
模型(声学和语言)的总大小,以MB为单位。我们省略了云端引擎的这项指标。
引擎
- 亚马逊 Transcribe
- Azure 语音转文本
- 谷歌语音转文本
- IBM Watson 语音转文本
- OpenAI Whisper
- Picovoice Cheetah
- Picovoice Leopard
使用方法
本基准测试在 Ubuntu 22.04
上开发和测试。
- 安装 FFmpeg
- 下载数据集
- 安装依赖:
pip3 install -r requirements.txt
以下我们提供每个引擎运行基准测试的说明。支持的数据集有:COMMON_VOICE
, LIBRI_SPEECH_TEST_CLEAN
, LIBRI_SPEECH_TEST_OTHER
, 或 TED_LIUM
。
亚马逊 Transcribe 使用说明
将 ${DATASET}
替换为支持的数据集之一,${DATASET_FOLDER}
替换为数据集路径,${AWS_PROFILE}
替换为您想使用的 AWS 配置文件名称。
python3 benchmark.py \
--dataset ${DATASET} \
--dataset-folder ${DATASET_FOLDER} \
--engine AMAZON_TRANSCRIBE \
--aws-profile ${AWS_PROFILE}
Azure 语音转文本使用说明
将 ${DATASET}
替换为支持的数据集之一,${DATASET_FOLDER}
替换为数据集路径,${AZURE_SPEECH_KEY}
和 ${AZURE_SPEECH_LOCATION}
替换为您 Azure 账户的信息。
python3 benchmark.py \
--dataset ${DATASET} \
--dataset-folder ${DATASET_FOLDER} \
--engine AZURE_SPEECH_TO_TEXT \
--azure-speech-key ${AZURE_SPEECH_KEY}
--azure-speech-location ${AZURE_SPEECH_LOCATION}
谷歌语音转文本使用说明
将 ${DATASET}
替换为支持的数据集之一,${DATASET_FOLDER}
替换为数据集路径,${GOOGLE_APPLICATION_CREDENTIALS}
替换为从谷歌云平台下载的凭证。
python3 benchmark.py \
--dataset ${DATASET} \
--dataset-folder ${DATASET_FOLDER} \
--engine GOOGLE_SPEECH_TO_TEXT \
--google-application-credentials ${GOOGLE_APPLICATION_CREDENTIALS}
IBM Watson 语音转文本使用说明
将 ${DATASET}
替换为支持的数据集之一,${DATASET_FOLDER}
替换为数据集路径,${WATSON_SPEECH_TO_TEXT_API_KEY}
/${WATSON_SPEECH_TO_TEXT_URL}
替换为您 IBM 账户的凭证。
python3 benchmark.py \
--dataset ${DATASET} \
--dataset-folder ${DATASET_FOLDER} \
--engine IBM_WATSON_SPEECH_TO_TEXT \
--watson-speech-to-text-api-key ${WATSON_SPEECH_TO_TEXT_API_KEY}
--watson-speech-to-text-url ${WATSON_SPEECH_TO_TEXT_URL}
OpenAI Whisper 使用说明
将 ${DATASET}
替换为支持的数据集之一,${DATASET_FOLDER}
替换为数据集路径,${WHISPER_MODEL}
替换为 Whisper 模型类型(WHISPER_TINY
, WHISPER_BASE
, WHISPER_SMALL
, WHISPER_MEDIUM
, 或 WHISPER_LARGE
)
python3 benchmark.py \
--engine ${WHISPER_MODEL} \
--dataset ${DATASET} \
--dataset-folder ${DATASET_FOLDER} \
Picovoice Cheetah 使用说明
将 ${DATASET}
替换为支持的数据集之一,${DATASET_FOLDER}
替换为数据集路径,${PICOVOICE_ACCESS_KEY}
替换为从 Picovoice 控制台 获得的访问密钥。
python3 benchmark.py \
--engine PICOVOICE_CHEETAH \
--dataset ${DATASET} \
--dataset-folder ${DATASET_FOLDER} \
--picovoice-access-key ${PICOVOICE_ACCESS_KEY}
Picovoice Leopard 使用说明
将 ${DATASET}
替换为支持的数据集之一,${DATASET_FOLDER}
替换为数据集路径,${PICOVOICE_ACCESS_KEY}
替换为从 Picovoice 控制台 获得的访问密钥。
python3 benchmark.py \
--engine PICOVOICE_LEOPARD \
--dataset ${DATASET} \
--dataset-folder ${DATASET_FOLDER} \
--picovoice-access-key ${PICOVOICE_ACCESS_KEY}
结果
词错误率 (WER)
引擎 | LibriSpeech 测试-清晰 | LibriSpeech 测试-其他 | TED-LIUM | CommonVoice | 平均值 |
---|---|---|---|---|---|
亚马逊 Transcribe | 2.6% | 5.6% | 3.8% | 8.7% | 5.2% |
微软 Azure 语音转文字 | 2.8% | 6.2% | 4.6% | 8.9% | 5.6% |
谷歌语音转文字 | 10.8% | 24.5% | 14.4% | 31.9% | 20.4% |
谷歌语音转文字增强版 | 6.2% | 13.0% | 6.1% | 18.2% | 10.9% |
IBM Watson 语音转文字 | 10.9% | 26.2% | 11.7% | 39.4% | 22.0% |
Whisper 大型(多语言) | 3.7% | 5.4% | 4.6% | 9.0% | 5.7% |
Whisper 中型 | 3.3% | 6.2% | 4.6% | 10.2% | 6.1% |
Whisper 小型 | 3.3% | 7.2% | 4.8% | 12.7% | 7.0% |
Whisper 基础型 | 4.3% | 10.4% | 5.4% | 17.9% | 9.5% |
Whisper 微型 | 5.9% | 13.8% | 6.5% | 24.4% | 12.7% |
Picovoice Cheetah | 5.6% | 12.1% | 7.7% | 17.5% | 10.7% |
Picovoice Leopard | 5.3% | 11.3% | 7.2% | 16.2% | 10.0% |
核心小时数 & 模型大小
为获得这些结果,我们在整个TED-LIUM数据集上运行了基准测试并记录了处理时间。
测量在一台配备AMD CPU(AMD Ryzen 9 5900X (12) @ 3.70GHz
)、
64 GB RAM和NVMe存储的Ubuntu 22.04机器上进行,同时使用10个核心。我们在此基准测试中省略了Whisper大型(多语言)模型。
引擎 | 核心小时数 | 模型大小 / MB |
---|---|---|
Whisper 中型 | 1.50 | 1457 |
Whisper 小型 | 0.89 | 462 |
Whisper 基础型 | 0.28 | 139 |
Whisper 微型 | 0.15 | 73 |
Picovoice Leopard | 0.05 | 36 |
Picovoice Cheetah | 0.09 | 31 |