语音识别(Automatic Speech Recognition,ASR)可以将音视频中包含的人类声音转换为文本。适用于会议记录、客户服务、媒体制作、市场研究及多样化的实时交互场景,能显著提升工作效率、服务质量与人机交互体验。
语音识别也称为语音转写、语音转录、语音转文字等。
实时语音识别
实时语音识别可以将音频流实时转换为文本,实现“边说边出文字”的效果。它适用于对麦克风语音进行实时识别,以及对本地音视频文件进行实时转录。
应用场景
-
会议:为会议、演讲、培训、庭审等提供实时记录。
-
直播:为直播带货、赛事直播等提供实时字幕。
-
客服:实时记录通话内容,协助提升服务品质。
-
游戏:让玩家无需停下手头操作即可语音输入或阅读聊天内容。
-
社交聊天:使用社交App或输入法时,语音自动转文本。
-
人机交互:转换语音对话为文字,优化人机交互体验。
支持的模型
模型名称 | 支持的语言 | 支持的采样率 | 适合场景 | 单价 | 免费额度 |
paraformer-realtime-v2 | 中文(含粤语等各种方言)、英文、日语、韩语 支持多个语种自由切换 | 16kHz | 视频直播、会议等 | 0.00024元/秒 | 36,000秒(10小时) 每月1日0点自动发放 有效期1个月 |
paraformer-realtime-v1 | 中文 | 16kHz | |||
paraformer-realtime-8k-v1 | 8Hz | 电话客服等 |
快速开始
您可以先进行在线体验:在线体验Paraformer实时语音识别(paraformer-realtime-v1)。
下面是调用API的示例代码。
您需要已 获取API-KEY并 配置API-KEY到环境变量,以及 安装DashScope SDK。
-
从麦克风采集实时音频,并将获取的音频流实时发送至语音识别模型。
运行代码示例,当控制台显示
RecognitionCallback open.
时,用户使用麦克风开始说话。在RecognitionCallback sentence:
中实时显示识别结果文本,达到“边说边出文字”的效果。Python
import pyaudio import dashscope from dashscope.audio.asr import (Recognition, RecognitionCallback, RecognitionResult) dashscope.api_key = 'YOUR-DASHSCOPE-API-KEY' # 如果您没有配置环境变量,请用您已获取的API-KEY替换YOUR-DASHSCOPE-API-KEY mic = None stream = None class Callback(RecognitionCallback): def on_open(self) -> None: global mic global stream print('RecognitionCallback open.') mic = pyaudio.PyAudio() stream = mic.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True) def on_close(self) -> None: global mic global stream print('RecognitionCallback close.') stream.stop_stream() stream.close() mic.terminate() stream = None mic = None def on_event(self, result: RecognitionResult) -> None: print('RecognitionCallback sentence: ', result.get_sentence()) callback = Callback() recognition = Recognition(model='paraformer-realtime-v2', format='pcm', sample_rate=16000, callback=callback) recognition.start() while True: if stream: data=stream.read(3200, exception_on_overflow=False) recognition.send_audio_frame(data) else: break recognition.stop()
-
针对本地音视频文件,调用实时语音识别API即时输出识别结果。
Python
import requests from http import HTTPStatus import dashscope from dashscope.audio.asr import Recognition dashscope.api_key = 'YOUR-DASHSCOPE-API-KEY' # 如果您没有配置环境变量,请用您已获取的API-KEY替换YOUR-DASHSCOPE-API-KEY r = requests.get( 'https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav' ) with open('asr_example.wav', 'wb') as f: f.write(r.content) recognition = Recognition(model='paraformer-realtime-v2', format='wav', sample_rate=16000, callback=None) result = recognition.call('asr_example.wav') if result.status_code == HTTPStatus.OK: with open('asr_result.txt', 'w+') as f: for sentence in result.get_sentence(): f.write(str(sentence) + '\n') print('Recognition done!') else: print('Error: ', result.message)
完整的识别结果会以JSON格式保存在.txt文件中。完整结果包含转换后的文本以及文本在音视频文件中的起始、结束时间(以毫秒为单位)。
{'begin_time': 280, 'end_time': 3810, 'text': 'Hello world, 这里是阿里巴巴语音实验室。', 'words': [{'begin_time': 280, 'end_time': 633, 'text': 'Hello ', 'punctuation': ''}, {'begin_time': 633, 'end_time': 986, 'text': 'world', 'punctuation': ', '}, {'begin_time': 986, 'end_time': 1456, 'text': '这里', 'punctuation': ''}, {'begin_time': 1456, 'end_time': 1926, 'text': '是阿', 'punctuation': ''}, {'begin_time': 1926, 'end_time': 2396, 'text': '里巴', 'punctuation': ''}, {'begin_time': 2396, 'end_time': 2866, 'text': '巴语', 'punctuation': ''}, {'begin_time': 2866, 'end_time': 3336, 'text': '音实', 'punctuation': ''}, {'begin_time': 3336, 'end_time': 3810, 'text': '验室', 'punctuation': '。'}]}
以上为 Python SDK 样例,更多编程语言支持和接入方式请参见实时语音识别API详情。
输入文件限制
对本地音视频文件进行识别时:
-
输入文件的方式:上传本地文件。
-
文件数量:单次调用最多输入1个文件。
-
文件大小:无限制。
-
文件格式:支持pcm、wav、opus、speex、aac、amr等多种格式。推荐pcm和wav。
由于音视频文件格式及其变种众多,因此不能保证所有格式均能够被正确识别。请通过测试验证您所提供的文件能够获得正常的语音识别结果。
-
采样率:支持音视频采样率为16000 Hz及以上,电话语音采样率为8000 Hz及以上。
音频采样率是指录音设备在一秒钟内对声音信号的采样次数,更高的采样率可以提供更丰富的信号信息,有助于提高语音识别系统的准确率,尤其是在处理复杂背景噪声、快速语速或者不同口音的语音时。然而,实际效果还取决于算法的设计和优化。有时,过高的采样率可能引入更多噪声或无关信息,反而对识别结果产生负面影响,特别是在没有相应优化的算法中。因此,请按照音视频的采样率选择适用的模型。如果语音数据采样率是8000Hz,请勿将采样率转换为16000Hz,选用支持8000Hz采样率的模型即可。
录音文件识别
录音文件识别(也称为录音文件转写)是指对音视频文件进行语音识别,将语音转换为文本。支持单个文件识别和批量文件识别,适用于处理不需要即时返回结果的场景。
应用场景
-
会议、课堂录音记录:将录音文件转成文字,方便后期快速进行信息检索、分析和整理重点内容。
-
客服电话分析:自动记录并分析客户电话,快速理解客户需求,自动分类服务请求,甚至识别客户情绪,从而提升服务质量与效率。
-
字幕生成:帮助媒体制作与后期编辑人员识别音视频材料并生成对应的字幕,加速后期制作的流程。
-
市场研究与数据分析:将市场调研中收集到的消费者访谈、焦点小组讨论等录音数据,通过识别模型进行分析,提取消费者意见、偏好等信息,为企业决策提供支持。
支持的模型
模型名称 | 支持的语言 | 支持的采样率 | 适用的格式 | 单价 | 免费额度 |
paraformer-v2 | 中文普通话、中文方言(粤语、吴语、闽南语、东北话、甘肃话、贵州话、河南话、湖北话、湖南话、宁夏话、山西话、陕西话、山东话、四川话、天津话、江西话、云南话、上海话)、英语、日语、韩语 | 任意 | 视频直播、电话客服等 | 0.00008元/秒 | 36,000秒(10小时) 每月1日0点自动发放 有效期1个月 |
paraformer-v1 | 中文普通话、英语 | 任意 | 音频或视频 | ||
paraformer-8k-v1 | 中文普通话 | 8kHz | 电话语音 | ||
paraformer-mtl-v1 | 中文普通话、中文方言(粤语、吴语、闽南语、东北话、甘肃话、贵州话、河南话、湖北话、湖南话、宁夏话、山西话、陕西话、山东话、四川话、天津话)、英语、日语、韩语、西班牙语、印尼语、法语、德语、意大利语、马来语 | 16kHz及以上 | 音频或视频 |
模型名称 | 支持的语言 | 适用的格式 | 单价 | 免费额度 |
sensevoice-v1 | 超过50种语言(中、英、日、韩、粤等) | 音频或视频 | 0.0007 元/秒 | 36,000秒(10小时) 每月1日0点自动发放 有效期1个月 |
模型选型建议
-
语种支持:
-
对于中文(普通话和方言)、粤语、英语、日语、韩语、西班牙语、印尼语、法语、德语、意大利语、马来语,建议优先选择Paraformer以获得更优效果。同时,建议优先选择paraformer-v2模型。paraformer-v2支持指定语种,包括中文(含普通话和多种方言)、粤语、英语、日语、韩语。指定语种后,系统能够集中算法资源和语言模型于该特定语种,避免了在多种可能的语种中进行猜测和切换,从而减少了误识别的概率。
-
对于其他语言(俄语、泰语等),请选择SenseVoice,具体请参见附录:支持语言列表。
-
-
情感和事件识别:如果需要情感识别能力(包括高兴
<HAPPY>
、伤心<SAD>
、生气<ANGRY>
和中性<NEUTRAL>
)和4种常见音频事件识别(包括背景音乐<BGM>
、说话声<Speech>
、掌声<Applause>
和笑声<Laughter>
),请选择SenseVoice语音识别模型。 -
热词定制:如果您的业务领域中,有部分专有名词和行业术语识别效果不够好,您可以定制热词,将这些词添加到词表从而改善识别结果。您可以使用paraformer-v1、paraformer-8k-v1、paraformer-mtl-v1语音识别模型。关于热词的更多信息,请参见Paraformer语音识别热词定制与管理。
快速开始
您可以先进行在线体验:请在模型体验页面,单击更多模型,再在“Paraformer语音识别”中选择“Paraformer语音识别-8k-v1”模型。
下面是调用API的示例代码。
您需要已 获取API-KEY并 配置API-KEY到环境变量,以及 安装DashScope SDK。
由于音视频文件的尺寸通常较大,文件传输和语音识别处理均需要时间,文件转写API通过异步调用方式来提交任务。开发者需要通过查询接口,在文件转写完成后获得语音识别结果。
Paraformer
import json
from urllib import request
from http import HTTPStatus
import dashscope
dashscope.api_key = 'YOUR-DASHSCOPE-API-KEY' # 如果您没有配置环境变量,请用您已获取的API-KEY替换YOUR-DASHSCOPE-API-KEY
task_response = dashscope.audio.asr.Transcription.async_call(
model='paraformer-v2',
file_urls=[
'https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav',
'https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_male2.wav'
],
language_hints=['zh', 'en'])
transcription_response = dashscope.audio.asr.Transcription.wait(
task=task_response.output.task_id)
if transcription_response.status_code == HTTPStatus.OK:
for transcription in transcription_response.output['results']:
url = transcription['transcription_url']
result = json.loads(request.urlopen(url).read().decode('utf8'))
print(json.dumps(result, indent=4, ensure_ascii=False))
print('transcription done!')
else:
print('Error: ', transcription_response.output.message)
完整的识别结果会以JSON格式打印在控制台。完整结果包含转换后的文本以及文本在音视频文件中的起始、结束时间(以毫秒为单位)。
以上为 Python SDK 样例,更多编程语言支持和接入方式请参见Paraformer录音文件识别API详情。
输入文件限制
-
输入文件的方式:通过HTTP / HTTPS协议的URL指定。
-
文件数量:单次调用最多输入100个文件URL,待所有URL转写完成后,您可以一次性获取全部转写结果。
-
文件大小:每个URL中的文件不超过2 GB。如果超出限制,可尝试对文件进行预处理以降低文件尺寸。具体操作,请参见最佳实践。
-
文件格式:aac、amr、avi、flac、flv、m4a、mkv、mov、mp3、mp4、mpeg、ogg、opus、wav、webm、wma、wmv。
由于音视频文件格式及其变种众多,因此不能保证所有格式均能够被正确识别。请通过测试验证您所提供的文件能够获得正常的语音识别结果。
-
采样率:sensevoice-v1、paraformer-v2、paraformer-v1模型对采样率无限制,其他模型支持音视频采样率为16000 Hz及以上,电话语音采样率为8000 Hz及以上。
音频采样率是指录音设备在一秒钟内对声音信号的采样次数,更高的采样率可以提供更丰富的信号信息,有助于提高语音识别系统的准确率,尤其是在处理复杂背景噪声、快速语速或者不同口音的语音时。然而,实际效果还取决于算法的设计和优化。有时,过高的采样率可能引入更多噪声或无关信息,反而对识别结果产生负面影响,特别是在没有相应优化的算法中。因此,请按照音视频的采样率选择适用的模型。如果语音数据采样率是8000Hz,请勿将采样率转换为16000Hz,选用支持8000Hz采样率的模型即可。
可能影响识别准确率的因素
-
声音质量:设备、环境等可能影响语音的清晰度,从而影响识别准确率。高质量的音频输入是提高识别准确性的前提。
-
说话人特征:不同人的声音特质(如音调、语速、口音、方言)差异很大,这些个体差异会对语音识别系统构成挑战,尤其是对于未充分训练过的特定口音或方言。
-
语言和词汇:语音识别模型通常针对特定的语言进行训练。当处理多语言混合、专业术语、俚语或网络用语时,识别难度会增加。您可以通过热词功能,改变识别结果,具体操作请参见Paraformer语音识别热词定制与管理。
-
上下文理解:缺乏对对话上下文的理解可能会导致误解,尤其是在含义模糊或依赖于上下文的情境中。