快速入门:开始使用 Azure AI 语音 CLI

本文介绍如何使用 Azure AI 语音 CLI(也称 SPX)访问语音转文本、文本转语音和语音翻译等语音服务,而无需编写任何代码。 语音 CLI 随时可投入生产,可通过 .bat 或 shell 脚本,用其自动化语音服务中的简单工作流。

本文假定你具备命令提示符窗口、终端或 PowerShell 的相关工作知识。

注意

在 PowerShell 中,停止分析令牌 (--%) 应位于 spx 之后。 例如,运行 spx --% config @region 查看当前区域配置值。

下载并安装

按照以下步骤在 Windows 上安装语音 CLI:

  1. 安装适用于你的平台的 Microsoft Visual C++ Redistributable for Visual Studio。 首次安装此包时,可能需要重启。

  2. 安装 .NET 8

  3. 通过输入以下命令,使用 .NET CLI 安装语音 CLI:

    dotnet tool install --global Microsoft.CognitiveServices.Speech.CLI
    

    若要更新语音 CLI,请输入以下命令:

    dotnet tool update --global Microsoft.CognitiveServices.Speech.CLI
    

若要查看语音 CLI 的帮助,请输入 spxspx help

字体限制

在 Windows 上,语音 CLI 只能显示本地计算机上命令提示符适用的字体。 Windows 终端支持语音 CLI 以交互方式生成的所有字体。

如果输出到文件,文本编辑器(例如记事本)或 web 浏览器(例如 Microsoft Edge)也可以显示所有字体。

创建资源配置

如果要开始使用,需要 API 密钥和区域标识符(例如,chinanorth2chinaeast2)。 在 Azure 门户中创建适用于语音的 AI 服务资源。 有关详细信息,请参阅创建 Azure AI 服务资源

若要配置你的资源密钥和区域标识符,请运行以下命令:

spx config @key --set SPEECH-KEY
spx config @region --set SPEECH-REGION

将存储密钥和区域以用于将来的语音 CLI 命令。 若要查看当前配置,请运行以下命令:

spx config @key
spx config @region

根据需要,请包含 clear 选项以删除任一存储值:

spx config @key --clear
spx config @region --clear

基本用法

本部分介绍了一些基本的 SPX 命令,这些命令对于首次测试和试验通常非常有用。 运行以下命令以查看工具内帮助:

spx

可按关键字搜索帮助主题。 例如,要查看语音 CLI 用法示例列表,请运行以下命令:

spx help find --topics "examples"

要查看 recognize 命令的选项,请运行以下命令:

spx help recognize

控制台输出中列出了更多帮助命令。 可输入这些命令以获取有关子命令的详细帮助。

语音转文本(语音识别)

提示

若你遇到问题或者想要详细了解语音 CLI 的识别选项,可以运行 spx help recognize

识别来自麦克风的语音

  1. 运行以下命令,从麦克风开始进行语音识别:

    spx recognize --microphone --source en-US
    
  2. 对麦克风说话,随后可以看到字词会实时转录为文本。 +如果停止说话 30 秒,或者选择 “CtrlC”,语音 CLI 将停止。

    Connection CONNECTED...
    RECOGNIZED: I'm excited to try speech to text.
    

注意

在 Docker 容器中运行语音 CLI 时,不能使用计算机的麦克风。 但你可以在本地装载的目录中读取和保存音频文件。

从文件中识别语音

若要识别音频文件中的语音,请使用 --file 而不是 --microphone。 对于压缩的音频文件(如 MP4),请安装 GStreamer 并使用 --format。 有关详细信息,请参阅如何使用压缩的输入音频

spx recognize --file YourAudioFile.wav
spx recognize --file YourAudioFile.mp4 --format any

短语列表

若要提高特定字词或语句的识别准确性,请使用短语列表。 使用 recognize 命令时也可以在行中加入短语列表或文本文件:

spx recognize --microphone --phrases "Contoso;Jessie;Rehaan;"
spx recognize --microphone --phrases @phrases.txt

语言支持

若要更改语音识别语言,请将 en-US 替换为其他支持的语言。 例如,使用 es-ES 表示西班牙语(西班牙)。 如果未指定语言,则默认值为 en-US

spx recognize --microphone --source es-ES

连续识别

若要连续识别超过 30 秒的音频,请追加 --continuous

spx recognize --microphone --source es-ES --continuous

文本转语音(语音合成)

提示

若你遇到问题或者想要详细了解语音 CLI 的识别选项,可以运行 spx help synthesize

以下命令会将文本作为输入,然后将合成的语音输出到当前活动的输出设备(例如计算机扬声器)。

spx synthesize --text "Testing synthesis using the Speech CLI" --speakers

你还可将合成的输出保存到文件中。 在此示例中,我们可以在运行命令的目录中创建一个名为 my-sample 的文件。

spx synthesize --text "Enjoy using the Speech CLI." --audio output my-sample.wav

这些示例假定你是以英语进行测试的。 但语音服务支持多种语言的语音合成。 你可通过运行以下命令或访问语言支持页面来拉取完整的语音列表。

spx synthesize --voices

以下是使用已发现语音的命令。

spx synthesize --text "Bienvenue chez moi." --voice fr-FR-AlainNeural --speakers

语音到文本的转换

提示

如果遇到问题或想要了解有关语音 CLI 翻译选项的详细信息,可以运行 spx help translate

翻译来自麦克风的语音

  1. 运行以下命令,从麦克风启动语音翻译:

    spx translate --source en-US --target it --microphone
    
  2. 对着麦克风说话,并实时看到翻译后的语音转录。 +如果停止说话 30 秒,或者选择 “CtrlC”,语音 CLI 将停止。

    Connection CONNECTED...
    TRANSLATING into 'it': Sono (from 'I'm')
    TRANSLATING into 'it': Sono entusiasta (from 'I'm excited to')
    TRANSLATING into 'it': Sono entusiasta di provare la parola (from 'I'm excited to try speech')
    TRANSLATED into 'it': Sono entusiasta di provare la traduzione vocale. (from 'I'm excited to try speech translation.')
    

注意

在 Docker 容器中运行语音 CLI 时,不能使用计算机的麦克风。 但你可以在本地装载的目录中读取和保存音频文件。

从文件中翻译语音

若要从音频文件翻译语音,请使用 --file 而不是 --microphone。 对于压缩的音频文件(如 MP4),请安装 GStreamer 并使用 --format。 有关详细信息,请参阅如何使用压缩的输入音频

spx translate --source en-US --target it --file YourAudioFile.wav
spx translate --source en-US --target it --file YourAudioFile.mp4 --format any

短语列表

若要提高特定字词或语句的识别准确性,请使用短语列表。 使用 translate 命令时也可以在行中加入短语列表或文本文件:

spx translate --source en-US --target it --microphone --phrases "Contoso;Jessie;Rehaan;"
spx translate --source en-US --target it --microphone --phrases @phrases.txt

语言支持

若要更改语音识别语言,请将 en-US 替换为其他支持的语言。 指定具有短划线 (-) 分隔符的完整区域设置。 例如,es-ES 代表西班牙语(西班牙)。 如果未指定语言,则默认语言为 en-US

spx translate --microphone --source es-ES

若要更改翻译目标语言,请将 it 替换为其他支持的语言。 在极少数情况下,只需指定区域设置短划线 (-) 分隔符前面的语言代码。 例如,对于西班牙语(西班牙)使用 es(而不是 es-ES)。 如果未指定语言,则默认语言为 en

spx translate --microphone --target es

多个目标语言

将语音翻译成多种语言时,请用分号 (;)分隔语言代码。

spx translate --microphone --source en-US --target 'ru-RU;fr-FR;es-ES'

保存翻译输出

如果要保存转换的输出,请使用 --output 标志。 在本例中,还可以从文件中进行读取。

spx translate --file /some/file/path/input.wav --source en-US --target ru-RU --output file /some/file/path/russian_translation.txt

连续翻译

对于超过 30 秒的音频连续翻译,请追加 --continuous

spx translate --source en-US --target it --microphone --continuous

后续步骤