使用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
运行结果如下: