使用Azure Speech Cli体验语音服务
分类: Azure认知服务 ◆ 标签: #Azure #人工智能 #语音服务 #语音转文本 #文本转语音 ◆ 发布于: 2023-06-05 15:16:45
Azure语音服务(Azure Speech Service)目前归类于Azure认知服务(Azure Cognitive Service), 是基于Azure AI技术面向普通公众开发的一项Azure服务。由于Azure的开发日新月异,基于到本文,目前Azure的语音服务主要向用户提供Azure 语音CLI、Azure语音服务SDK、语音设备SDK, 以及rest api方便大家对于基于语音的应用场景进行具体的业务开发。下述列表简单的介绍了Azure Speech 服务提供的主要功能:
| 服务 | 功能 | 说明 |
|---|---|---|
| 语音转文本(Speech-to-text) | 主要包括:
| 可以结合LUIS进行编程 |
| 文本转语音(text-to-speech) | 主要功能包括:
| 这里的自定义模型是指语音合成的模型 |
| 语音翻译(Speech Translation) | 语音翻译 | |
| 语音助手 | 创建人机交互的接口,例如集成Bot Framework的Direct Line Speech通道等等。 | |
| 声音识别 | 根据声音识别说话的人 |
快速创建Azure Speech 服务
如果你还没有Azure账号,你可以参考我们之前的文章创建一个免费的Azure账号,用于测试。取得了账号之后,登录到Azure的Portal: Azure Global或者Azure China, 登录之后,使用左侧的菜单Create a resource, 如图

在出现的marketplace中搜索speech ,如下图:

选择Speech 服务。
按照提示填入必要的信息之后,选择Create按钮创建Speech Service:

等候创建成功之后,按照提示点击Go to Resrouce, 进入Speech Service的主界面:

选择Keys and Endpoint 记录下信息: Keys、Endpoint、Region 等重要信息, 下面我们会使用相应的信息使用Speech Cli测试Azure语音服务。
使用Azure Speech Cli测试Azure语音服务
Azure Speech Cli工具步仅仅是一个简单的用于测试的工具,实际上Azure Speech Cli工具的设计目的也可以随时投入的生产当中,也是Azure语音服务提供的工具之一,Azure Speech Cli的工具主要提供以下的核心功能:
- 语音识别: 语音转文本,或者转录
- 语音合成: 使用标准的模型或者神经网络模型对文本(或者基于SSML的配置)进行语音转换。
- 语音翻译: 将源语音翻译成目标的文本或者语音。
- 在Azure计算资源上运行:
spx webjob在远程计算资源上运行Speech cli命令。
安装Azure Speech Cli
Azure Speech Cli支持多种平台,基础平台明确支持Windows和Linux, 但是也可以通过Docker支持Windows, Linux, MacOs甚至是WSL
Windows上的安装
Windows上安装Speech Cli需要先安装.net Core的3.1版本以上,安装了.net core之后, 在windows上打开命令行工具,使用如下的命令来安装Azure Speech cli工具
dotnet tool install --global Microsoft.CognitiveServices.Speech.CLI
Linux上的安装
Linux上Cli 目前支持如下的操作系统:
- CentOS 7/8
- Debian 9/10
- Red Hat Enterprice Linux (RHEL) 7/8
- Ubuntu 16.04 / 18.04 / 20.04
先需要安装.Net Core 版本3.1以上,如何安装.Net Core, 请参考文档安装dotnet core
安装之后.Net Core之后,使用如下的命令安装Speech Cli:
dotnet tool install --global Microsoft.CognitiveServices.Speech.CLI
配置Speech Cli
安装完了之后,我们需要先配置Speech Cli。我们之前在创建speech服务时记录下了keys和region 然后我们使用如下的命令进行配置
spx config @key --set `keys`
spx config @region --set REGION
配置成功后,可以使用spx显示所有可以支持的命令,如果要查询某个命令的用法,可以使用如下的格式:spx help COMMAND, 例如:
spx help recognize
语音转文本
SPX使用系统缺省的麦克风进行语音输入,从而转为文本,例如:
spx recognize --microphone
没有指定语言的情况下,默认为英语,如果需要指定语言,例如中文,则使用--language选项:
spx recognize --microphone --language zh-CN
结果如下:

除了麦克风之外,可以从文件中读取,并进行语音转文本,使用如下命令:
spx recognize --file /path/to/file.wav
文本转语音
如果想使用spx将指定的文本转为语音,那么可以使用如下的命令来尝试:
spx synthesize --text "Testing synthesis using the Speech CLI" --speakers
文本转语音可以使用两种语音模型,一种是标准语音模型,另外一种是以神经网络模型的语音,根据Azure的官方文档,2021年1月之后,默认就是使用的神经网络语音。同时默认的情况下是使用英语,如果想使用其他的语音,则可以使用参数--voice指定需要的语言,例如:
spx synthesize --text "通过Azure语音服务CLI,测试Azure语音服务的文本转语音" --speakers
该测试会将转换后的语音通过电脑的扬声器播放,如果你想将转换后的语音另存为文件,可以使用如下的方式:
synthesize --text "通过Azure语音服务CLI,测试Azure语音服务的文本转语音" --audio output my-sample.wav --voice zh-CN-XiaoxiaoNeural
运行结果如下:

语音到文本的转换
语音到文本的转换和语音转文本的区别在于,可以将指定语言的语音转换为另一种语言的文本,如下图:
spx translate --microphone --source zh-CN --target en-Us
运行结果如下:

还可以转换为多种语言的文本,例如:
spx translate --microphone --source zh-CN --target en-Us:ru-RU;fr-FR;es-ES
运行结果如下:
