语音识别引擎
AmiVoice API 提供了多种语音识别引擎,以适应不同的语言和用途。通过为要识别的语音选择最合适的语音识别引擎,可以提高识别精度。本文将介绍语音识别引擎支持的语言、引擎类型以及选择使用的要点。
语音识别引擎列表
AmiVoice API 提供了多种语音识别引擎。另请参阅End to End和混合引擎的区别。
End to End
新一代语音识别引擎。
| 语言 | 引擎名称 | 支持的采样率 | 连接引擎名 |
|---|---|---|---|
| 日语 | 日本語E2E_汎用 | 8k / 16k | -a2-ja-general |
| 中文 | 中国語E2E_汎用 | 8k / 16k | -a2-zh-general |
| 多语言 | 多言語E2E_汎用 | 8k / 16k | -a2-multi-general |
| 日语 | 日本語E2E_汎用バッチ | 8k / 16k | -a2b-ja-general |
| 中文 | 中国語E2E_汎用バ ッチ | 8k / 16k | -a2b-zh-general |
| 多语言 | 多言語E2E_汎用バッチ | 8k / 16k | -a2b-multi-general |
- 多语言引擎可以对包含多种语言混合的语音进行识别,并为每种语言生成相应的文字。支持的语言包括日语、英语和中文。
- 批处理引擎是为不要求快速响应的批处理优化的引擎。如果更注重精度,请使用这类引擎。特别是在使用异步 HTTP 接口时,请指定批处理引擎。
混合
针对各种领域优化的语音识别引擎。
| 语言 | 引擎名称 | 语言模型 | 支持的采样率 | 连接引擎名 |
|---|---|---|---|---|
| 日语 | 会話_汎用 | 通用 | 8k / 16k | -a-general |
| 日语 | 会話_医療 | 医疗会议 | 16k | -a-medical |
| 日语 | 会話_金融 | 金融 | 16k | -a-bizfinance |
| 日语 | 会話_保険 | 保险 | 16k | -a-bizinsurance |
| 日语 | 音声入力_汎用 | 大规模通用 | 16k | -a-general-input |
| 日语 | 音声入力_医療 | 医疗通用 | 16k | -a-medical-input |
| 日语 | 音声入力_保険 | 保险 | 16k | -a-bizinsurance-input |
| 日语 | 音声入力_金融 | 金融 | 16k | -a-bizfinance-input |
| 英语 | 英語_汎用 | 通用 | 8k / 16k | -a-general-en |
| 中文 | 中国語_汎用 | 通用 | 8k / 16k | -a-general-zh |
| 韩语 | 韓国語_汎用 | 通用 | 8k / 16k | -a-general-ko |
| 日语 | 音声入力_氏名 | 氏名 | 8k / 16k | -a-name-input-private(*1) |
| 日语 | 音声入力_住所 | 住所 | 8k / 16k | -a-address-input-private(*1) |
| 日语 | 音声入力_ルール | 无 | 16k | -a-rule-input-private(*1) (*2) |
- (*1) 此引擎可在AmiVoice API Private 中使用。
- (*2) 异步 HTTP 接口 中不提供[音声入力_ルール]引擎。
语音识别引擎的组成要素
了解语音识别引擎的组成要素和特性有助于选择合适的引擎和有效使用 API。
End to End/混合
以下是 End to End/混合引擎共有要素的说明。
支持的采样率
所有语音识别引擎都支持 16kHz 采样率。部分引擎还支持 8kHz 采样率,这在电话等场景中常用。有关采样率的详细信息,请参阅音频格式的采样率部分。
- 如果自行录音,请使用 16kHz 采样率录音,并选用 16kHz 的引擎。
- 对于电话语音,请使用 8kHz 的引擎。
连接引擎名
请求参数中的连接引擎名 (grammarFileNames)应指定表格中"连接引擎名"列的字符串。有关 AmiVoice API Private 发布的引擎名称,请参阅您的个人页面。
混合
日语的混合语音识别引擎提供了多个引擎,这些引擎是用途(声学模型)和语言模型的组合。以下是混合引擎的说明。
用途
有针对人与人之间自然对话的语音转写优化的"会話"引擎,以及针对人对机器说话的情况优化的"音声入力"引擎。这些引擎使用基于不同数据集训练的声学模型。但是,用途的区别不仅仅在于声学模型的不同,还包括针对各自用途的优化。
特点和注意事项
"会話"引擎更容易去除"えーっと"或"あのー"等无意义词。在默认设置下,这些无意义词会被识别出来,然后自动删除。也可以设置为显示这些无意义词。请参阅填充词输出设置。使用"音声入力"引擎时,这些词更可能不被判断为无意义词而保留,或被误识别为其他词。
使用场景
- 对于会议或电话等语音的转写,请使用"会話"引擎。
- 对于电子病历、报告、邮件、短消息等的口述输入,或与机器人、语音聊天机器人等机器对话的场景,请使用"音声入力"引擎。
- 如果无法确定具体使用场景,请使用"会話"引擎。
语言模型
医疗、制药、金融、保险等不同"领域"有其常用词汇和表达方式。我们为这些领域分别提供了优化的"領域特化"语言模型。
以下是日语语言模型的列表。我们为不同用途提供了相应的引擎,同时还列出了各自的使用场景。
语言模型 | 语言模型说明和特定应用引擎 |
|---|---|
| 通用 | 适用于不限定用途的语音内容转写。仅适用于 "会話" 会話_汎用( -a-general): 会议、视频转写,以及输入内容不限的场景等 |
| 大型通用 | 适用于不限定用途的口述输入或语音对话的转写。比通用模型有更大的词汇量。包含了一些不常用词以及神社、寺庙、城堡、桥梁、温泉、动物园、水族馆、美术馆、博物馆、大坝、隧道等地标、场所、设施名称的丰富词汇。仅适用于 "音声入力" 音声入力_汎用( -a-general-input): 各种场景下的口述输入、语音对话应用等 |
| 金融 | 在"汎用"语言模型的基础上增加了金融行业的术语和表达方式。 会話_金融( -a-bizfinance): 金融行业会话的转写、面对面营销会话的转写等音声入力_金融( -a-bizfinance-input): 日报、邮件撰写的语音输入等 |
| 保险 | 在"汎用"语言模型的基础上增加了保险行业的术语和表达方式。 会話_保険( -a-bizinsurance): 保险行业会话的转写、面对面营销会话的转写等音声入力_保険( -a-bizinsurance-input): 日报、邮件撰写的语音输入等 |
| 医疗会议 | 在"汎用"语言模型的基础上增加了各种诊疗科目、医疗相关术语、医疗行业会议中的表达方式等。包含大量疾病名称、药品名称、医院名称、手术名称、地名等。仅适用于 "会話" 会話_医療( -a-medical ): 医疗行业会议、医生与患者的诊疗对话、医疗相关视频的转写、面对面营销会话的转写、医药代表的销售日报等 |
| 医疗通用 | 专门用于电子病历的所见、诊断书、诊疗信息提供书、介绍信、护理记录、药剂师的用药指导文等各种医疗文档的口述输入。仅适用于 "音声入力" 音声入力_医療( -a-medical-input): 各种诊疗科目的医生、药剂师等专业人员的口述输入 |
| 姓名 | 它专门识别人们的姓名(全名、仅姓氏、仅名字)。所有语音识别结果均以片假名输出。 专门用于 "音声入力" 音声入力_氏名( -a-name-input-private): 交互式语音应答系统等 |
| 住址 | 专门从事地址识别。识别全国各地的城市、区、镇、村庄名称和街道地址。 专门用于 "音声入力" 音声入力_住所( -a-address-input-private): 交互式语音应答系统等 |
| Rule Grammar | 通过使用 Rule Grammar (*3)可以让系统只识别您指定的固定短语和单词。 专门用于 "音声入力" 音声入力_ルール( -a-rule-input-private): 制造业和维护中的数据输入、机器人操作等。 |
- (*3) Rule Grammar 采用行业标准JSGF(JSpeech Grammar Format)或 SRGS (Speech Recognition Grammar Specification)格式。
日语语言模型的类名列表
以下是日语语音识别引擎中定义的类名列表。类名用于单词注册。详情请参阅单词注册。API 用户不能添加新的类。
类名 | 通用 | 大型通用 | 金融 | 保险 | 医疗会议 | 医疗通用 | 姓名 | 住址 | 补充 |
|---|---|---|---|---|---|---|---|---|---|
| 固有名詞 | ● | ● | ● | ● | ● | ||||
| 名前 | ● | ● | ● | ● | ● | 表示姓 | |||
| 名前(名) | ● | ● | ● | ● | ● | 表示名 | |||
| 名前 | ● | 表示姓名 (*4) | |||||||
| 駅名 | ● | ● | ● | ● | ● | ||||
| 地名 | ● | ● | ● | ● | |||||
| 会社名 | ● | ● | ● | ● | ● | ||||
| 部署名 | ● | ● | ● | ● | ● | ||||
| 役職名 | ● | ● | ● | ● | ● | ||||
| 記号 | ● | ● | ● | ● | ● | ||||
| 括弧開き | ● | ● | ● | ● | ● | ||||
| 括弧閉じ | ● | ● | ● | ● | ● | ||||
| 元号 | ● | ● | ● | ● | ● | ● | |||
| 病名 | ● | ● | |||||||
| 薬品名 | ● | ● | |||||||
| 病院名 | ● | ● | |||||||
| 手術名 | ● | ● | |||||||
| 地名_区町村 | ● | ● | |||||||
| 地名_支庁市郡 | ● | ● | |||||||
| フィラー(文頭) | ● | ● | |||||||
| フィラー(文末) | ● | ● |
- (*4) 名字类在医療汎用中表示姓名,而在其他语言模型中表示姓。
- Rule Grammar 引擎没有单词注册功能,因为需要识别的单词是在 Rule Grammar 内部设置的。。
中文语言模型的类名列表
这是中文语音识别引擎中定义的类名列表。
| 类名 | 通用 |
|---|---|
| 固有名词一般 | ● |
| 姓 | ● |
| 名 | ● |
韩语语言模型的类名列表
这是韩文语音识别引擎中定义的类名列表。
| 类名 | 通用 |
|---|---|
| 固有名詞 | ● |
| 地名 | ● |
| 駅名 | ● |
| 会社名 | ● |
| 名前(姓) | ● |
| 名前(名) | ● |
End to End与混合模型的区别
混合引擎是使用传统统计模型的语音识别引擎。在需要应对大量行业特定词汇的情况下(如医疗领域),或者需要混合引擎特有功能的情况下,请继续使用。End to End引擎是新一代的AmiVoice语音识别引擎。在通用用途中,通常具有较高的准确性,因此如果您是新使用AmiVoice API的用户,请首先尝试End to End引擎。如果您已经在使用AmiVoice API,请确认更改是否会影响您的应用程序,然后考虑迁 移。
混合引擎的特点
- 通过结合声学模型和语言模型进行语音识别。可以使用针对各种领域优化的语言模型的语音识别引擎。
- 可以在单词注册中使用类。
- 可以在单词级别的结果的
starttime和endtime中获取每个单词的准确时间信息。
End to End引擎的特点
- 仅提供通用词汇的引擎。
- 单词注册无法使用类。
- 在单词级别的结果中,无法获取每个单词的读音信息。
- 通过单词级别的结果的
starttime和endtime获得的时间信息不如混合引擎准确。 - 作为混合引擎不会出现的错误模式,可能会重复部分结果。这种情况特别容易发生在音质明显较差的音频或过长的音频(超过20秒)中。
- 不支持抑制填充词自动删除。所有填充词都会自动删除。
- 截至2025-03-25,End to End引擎无法进行单词注册。如果需要单词注册,请使用混合引擎。
- 截至2025-03-25,中文End to End引擎不支持填充词自动删除。
费用
不同引擎的费用有所不同。详情请参阅AmiVoice API的价格。
关于识别精度
语音识别引擎单词表中没有的单词不会被输出。当说出单词表中没有的单词时,会被识别为发音相似的单词、发音相似的短单词组合或simply错误的单词。由于计算资源和计算时间的限制,每个语音识别引擎都有固定的单词表。像"会話_汎用"和"音声入力_汎用"这样的通用引擎注册了大量单词,以便在各种场景中使用,但不包含特定行业或用途的专门词汇。
对于医疗、金融、保险等行业常用的专业术语,使用特定行业的专门引擎可以实现对该行业常用词汇的高识别率。对于特定组织常用的词汇,可以通过进行单词注册来应对。
关于通用引擎和领域特化引擎的识别率差异,AmiVoice Tech Blog中有比较报告。请参阅比较AmiVoice领域特化引擎的语音识别精度(通用 vs 电子病历)和【使用相同发言比较验证】语音输入引擎和对话引擎的识别结果差异。