Skip to main content

使用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 语音CLIAzure语音服务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 记录下信息: KeysEndpointRegion 等重要信息, 下面我们会使用相应的信息使用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支持多种平台,基础平台明确支持WindowsLinux, 但是也可以通过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服务时记录下了keysregion 然后我们使用如下的命令进行配置

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

运行结果如下: