快速入门:使用语音转文本创建字幕

参考文档 | 包 (NuGet) | GitHub 上的其他示例

在本快速入门中,你将运行控制台应用,以使用语音转文本创建字幕

提示

尝试使用 Speech Studio,并选择示例视频剪辑以查看实时处理或脱机处理的字幕结果。

先决条件

设置环境

语音 SDK 以 NuGet 包的形式提供并实现了 .NET Standard 2.0。 本指南的后面部分会安装语音 SDK,但先请查看 SDK 安装指南以了解更多要求。

你还必须安装用于已压缩的输入音频的 GStreamer

设置环境变量。

需要对应用程序进行身份验证才能访问 Azure AI 服务。 本文介绍如何使用环境变量来存储凭据。 然后,你可以从代码访问环境变量来验证应用程序。 对于生产环境,请使用更安全的方式来存储和访问凭据。

重要

我们建议使用 Azure 资源的托管标识进行 Microsoft Entra ID 身份验证,以避免将凭据随云中运行的应用程序一起存储。

如果使用 API 密钥,请将其安全地存储在其他某个位置,例如 Azure 密钥保管库中。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。

有关 Azure AI 服务安全性的详细信息,请参阅对 Azure AI 服务的请求进行身份验证

若要为语音资源密钥和区域设置环境变量,请打开控制台窗口,并按照操作系统和开发环境的说明进行操作。

  • 要设置 SPEECH_KEY 环境变量,请将“your-key”替换为你的资源的某一个密钥。
  • 要设置 SPEECH_REGION 环境变量,请将 “your-region”替换为你的资源的某一个地区。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

注意

如果你只需要访问当前控制台中的环境变量,可使用 set(而不是 setx)来设置环境变量。

添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用 Visual Studio 作为编辑器,请在运行示例之前重启 Visual Studio。

通过语音创建字幕

按照以下步骤生成并运行字幕创建快速入门代码示例。

  1. 从 GitHub 复制 scenarios/csharp/dotnetcore/captioning/ 示例文件。 如果已安装 Git,请打开命令提示符并运行 git clone 该命令,以下载语音 SDK 示例存储库。
    git clone https://github.com/Azure-Samples/cognitive-services-speech-sdk.git
    
  2. 打开命令提示符,并更改为项目目录。
    cd <your-local-path>/scenarios/csharp/dotnetcore/captioning/captioning/
    
  3. 使用 .NET CLI 生成项目。
    dotnet build
    
  4. 使用首选命令行参数运行应用程序。 请参阅用法和参数以了解可用选项。 示例如下:
    dotnet run --input caption.this.mp4 --format any --output caption.output.txt --srt --realTime --threshold 5 --delay 0 --profanity mask --phrases "Contoso;Jessie;Rehaan"
    

    重要

    确保 --input--output 指定的路径有效。 否则,必须更改路径。

    请确保按照上文所述设置 SPEECH_KEYSPEECH_REGION 环境变量。 否则,请使用 --key--region 参数。

检查结果

使用上述示例中的 realTime 选项时,输出中包含来自 Recognizing 事件的部分结果。 在此示例中,只有最终 Recognized 事件包含逗号。 逗号不是 RecognizingRecognized 事件之间的唯一区别。 有关详细信息,请参阅获取部分结果

1
00:00:00,170 --> 00:00:00,380
The

2
00:00:00,380 --> 00:00:01,770
The rainbow

3
00:00:01,770 --> 00:00:02,560
The rainbow has seven

4
00:00:02,560 --> 00:00:03,820
The rainbow has seven colors

5
00:00:03,820 --> 00:00:05,050
The rainbow has seven colors red

6
00:00:05,050 --> 00:00:05,850
The rainbow has seven colors red
orange

7
00:00:05,850 --> 00:00:06,440
The rainbow has seven colors red
orange yellow

8
00:00:06,440 --> 00:00:06,730
The rainbow has seven colors red
orange yellow green

9
00:00:06,730 --> 00:00:07,160
orange, yellow, green, blue,
indigo and Violet.

使用 --offline 选项时,最终 Recognized 事件的结果是稳定的。 输出中不包括部分结果:

1
00:00:00,170 --> 00:00:05,540
The rainbow has seven colors, red,
orange, yellow, green, blue,

2
00:00:05,540 --> 00:00:07,160
indigo and Violet.

SRT(SubRip 文本)时间跨度输出格式为 hh:mm:ss,fff。 有关详细信息,请参阅字幕输出格式

用法和参数

用法:captioning --input <input file>

连接选项包括:

  • --key:语音资源密钥。 替代 SPEECH_KEY 环境变量。 必须设置环境变量(推荐)或使用 --key 选项。
  • --region REGION:语音资源区域。 替代 SPEECH_REGION 环境变量。 必须设置环境变量(推荐)或使用 --region 选项。 示例:chinanorth2chinaeast2

重要

如果使用 API 密钥,请将其安全地存储在某个其他位置,例如 Azure Key Vault 中。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。

有关 Azure AI 服务安全性的详细信息,请参阅对 Azure AI 服务的请求进行身份验证

输入选项包括:

  • --input FILE:输入文件中的音频。 默认输入为麦克风。
  • --format FORMAT:使用压缩音频格式。 仅对 --file 有效。 有效值为 alawanyflacmp3mulawogg_opus。 默认值是 any。 若要使用 wav 文件,请不要指定格式。 此选项在 JavaScript 字幕示例中不可用。 对于压缩的音频文件(如 MP4),请安装 GStreamer 并参阅如何使用压缩的输入音频

语言选项包括:

  • --language LANG:使用相应支持的区域设置之一指定语言。 将字幕分行时使用此选项。 默认值为 en-US

识别选项包括:

  • --offline:输出脱机结果。 重写 --realTime。 默认输出模式处于脱机状态。
  • --realTime:输出实时结果。

实时输出包括 Recognizing 事件结果。 默认脱机输出仅为 Recognized 事件结果。 这些内容始终写入控制台,永远不会写入输出文件。 --quiet 选项可替代此选项。 有关详细信息,请参阅获取语音识别结果

准确度选项包括:

输出选项包括:

  • --help:显示此帮助并停止
  • --output FILE:将字幕输出到指定的 file。 需要此标记。
  • --srt:以 SRT(SubRip 文本)格式输出字幕。 默认格式为 WebVTT(Web 视频文本轨道)。 有关 SRT 和 WebVTT 字幕文件格式的详细信息,请参阅字幕输出格式
  • --maxLineLength LENGTH:将字幕每行的最大字符数设置为 LENGTH。 最小值为 20。 默认值为 37(中文为 30)。
  • --lines LINES:将字幕的行数设置为 LINES。 最小值为 1。 默认值为 2。
  • --delay MILLISECONDS:延迟每条字幕显示的毫秒数,以模拟实时体验。 此选项仅适用于使用 realTime 标记的情况。 最小值为 0.0。 默认值为 1000。
  • --remainTime MILLISECONDS:如果一条字幕未被另一条字幕替换,则应在屏幕上保留的毫秒数。 最小值为 0.0。 默认值为 1000。
  • --quiet:禁止控制台输出,错误除外。
  • --profanity OPTION:有效值:raw、remove、mask。 有关详细信息,请参阅亵渎内容筛选器概念。
  • --threshold NUMBER:设置稳定的部分结果阈值。 默认值为 3。 此选项仅适用于使用 realTime 标记的情况。 有关详细信息,请参阅获取部分结果概念。

清理资源

可以使用 Azure 门户Azure 命令行接口 (CLI) 删除创建的语音资源。

参考文档 | 包 (NuGet) | GitHub 上的其他示例

在本快速入门中,你将运行控制台应用,以使用语音转文本创建字幕

提示

尝试使用 Speech Studio,并选择示例视频剪辑以查看实时处理或脱机处理的字幕结果。

先决条件

设置环境

语音 SDK 以 NuGet 包的形式提供并实现了 .NET Standard 2.0。 本指南的后面部分会安装语音 SDK,但先请查看 SDK 安装指南以了解更多要求

你还必须安装用于已压缩的输入音频的 GStreamer

设置环境变量。

需要对应用程序进行身份验证才能访问 Azure AI 服务。 本文介绍如何使用环境变量来存储凭据。 然后,你可以从代码访问环境变量来验证应用程序。 对于生产环境,请使用更安全的方式来存储和访问凭据。

重要

我们建议使用 Azure 资源的托管标识进行 Microsoft Entra ID 身份验证,以避免将凭据随云中运行的应用程序一起存储。

如果使用 API 密钥,请将其安全地存储在其他某个位置,例如 Azure 密钥保管库中。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。

有关 Azure AI 服务安全性的详细信息,请参阅对 Azure AI 服务的请求进行身份验证

若要为语音资源密钥和区域设置环境变量,请打开控制台窗口,并按照操作系统和开发环境的说明进行操作。

  • 要设置 SPEECH_KEY 环境变量,请将“your-key”替换为你的资源的某一个密钥。
  • 要设置 SPEECH_REGION 环境变量,请将 “your-region”替换为你的资源的某一个地区。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

注意

如果你只需要访问当前控制台中的环境变量,可使用 set(而不是 setx)来设置环境变量。

添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用 Visual Studio 作为编辑器,请在运行示例之前重启 Visual Studio。

通过语音创建字幕

按照以下步骤在 Windows 上使用 Visual Studio Community 2022 生成和运行字幕创建快速入门代码示例。

  1. scenarios/cpp/windows/captioning/ 示例文件从 GitHub 下载或复制到本地目录中。

  2. 在 Visual Studio Community 2022 中打开 captioning.sln 解决方案文件。

  3. 使用 NuGet 包管理器在项目中安装语音 SDK。

    Install-Package Microsoft.CognitiveServices.Speech
    
  4. 打开“项目”>“属性”>“常规”。 将"配置"设置为 All configurations。 将" C++ 语言标准"设置为 ISO C++17 Standard (/std:c++17)

  5. 打开“构建”>“配置管理器”。

    • 在 64 位 Windows 安装中,将“活动解决方案平台”设置为 x64
    • 在 32 位 Windows 安装中,将“活动解决方案平台”设置为 x86
  6. 打开“项目”>“属性”>“调试”。 在“命令参数”上输入首选命令行参数。 请参阅用法和参数以了解可用选项。 下面是一个示例:

    --input caption.this.mp4 --format any --output caption.output.txt --srt --realTime --threshold 5 --delay 0 --profanity mask --phrases "Contoso;Jessie;Rehaan"
    

    重要

    确保 --input--output 指定的路径有效。 否则,必须更改路径。

    请确保按照上文所述设置 SPEECH_KEYSPEECH_REGION 环境变量。 否则,请使用 --key--region 参数。

  7. 生成并运行控制台应用程序。

检查结果

使用上述示例中的 realTime 选项时,输出中包含来自 Recognizing 事件的部分结果。 在此示例中,只有最终 Recognized 事件包含逗号。 逗号不是 RecognizingRecognized 事件之间的唯一区别。 有关详细信息,请参阅获取部分结果

1
00:00:00,170 --> 00:00:00,380
The

2
00:00:00,380 --> 00:00:01,770
The rainbow

3
00:00:01,770 --> 00:00:02,560
The rainbow has seven

4
00:00:02,560 --> 00:00:03,820
The rainbow has seven colors

5
00:00:03,820 --> 00:00:05,050
The rainbow has seven colors red

6
00:00:05,050 --> 00:00:05,850
The rainbow has seven colors red
orange

7
00:00:05,850 --> 00:00:06,440
The rainbow has seven colors red
orange yellow

8
00:00:06,440 --> 00:00:06,730
The rainbow has seven colors red
orange yellow green

9
00:00:06,730 --> 00:00:07,160
orange, yellow, green, blue,
indigo and Violet.

使用 --offline 选项时,最终 Recognized 事件的结果是稳定的。 输出中不包括部分结果:

1
00:00:00,170 --> 00:00:05,540
The rainbow has seven colors, red,
orange, yellow, green, blue,

2
00:00:05,540 --> 00:00:07,160
indigo and Violet.

SRT(SubRip 文本)时间跨度输出格式为 hh:mm:ss,fff。 有关详细信息,请参阅字幕输出格式

用法和参数

用法:captioning --input <input file>

连接选项包括:

  • --key:语音资源密钥。 替代 SPEECH_KEY 环境变量。 必须设置环境变量(推荐)或使用 --key 选项。
  • --region REGION:语音资源区域。 替代 SPEECH_REGION 环境变量。 必须设置环境变量(推荐)或使用 --region 选项。 示例:chinanorth2chinaeast2

重要

如果使用 API 密钥,请将其安全地存储在某个其他位置,例如 Azure Key Vault 中。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。

有关 Azure AI 服务安全性的详细信息,请参阅对 Azure AI 服务的请求进行身份验证

输入选项包括:

  • --input FILE:输入文件中的音频。 默认输入为麦克风。
  • --format FORMAT:使用压缩音频格式。 仅对 --file 有效。 有效值为 alawanyflacmp3mulawogg_opus。 默认值是 any。 若要使用 wav 文件,请不要指定格式。 此选项在 JavaScript 字幕示例中不可用。 对于压缩的音频文件(如 MP4),请安装 GStreamer 并参阅如何使用压缩的输入音频

语言选项包括:

  • --language LANG:使用相应支持的区域设置之一指定语言。 将字幕分行时使用此选项。 默认值为 en-US

识别选项包括:

  • --offline:输出脱机结果。 重写 --realTime。 默认输出模式处于脱机状态。
  • --realTime:输出实时结果。

实时输出包括 Recognizing 事件结果。 默认脱机输出仅为 Recognized 事件结果。 这些内容始终写入控制台,永远不会写入输出文件。 --quiet 选项可替代此选项。 有关详细信息,请参阅获取语音识别结果

准确度选项包括:

输出选项包括:

  • --help:显示此帮助并停止
  • --output FILE:将字幕输出到指定的 file。 需要此标记。
  • --srt:以 SRT(SubRip 文本)格式输出字幕。 默认格式为 WebVTT(Web 视频文本轨道)。 有关 SRT 和 WebVTT 字幕文件格式的详细信息,请参阅字幕输出格式
  • --maxLineLength LENGTH:将字幕每行的最大字符数设置为 LENGTH。 最小值为 20。 默认值为 37(中文为 30)。
  • --lines LINES:将字幕的行数设置为 LINES。 最小值为 1。 默认值为 2。
  • --delay MILLISECONDS:延迟每条字幕显示的毫秒数,以模拟实时体验。 此选项仅适用于使用 realTime 标记的情况。 最小值为 0.0。 默认值为 1000。
  • --remainTime MILLISECONDS:如果一条字幕未被另一条字幕替换,则应在屏幕上保留的毫秒数。 最小值为 0.0。 默认值为 1000。
  • --quiet:禁止控制台输出,错误除外。
  • --profanity OPTION:有效值:raw、remove、mask。 有关详细信息,请参阅亵渎内容筛选器概念。
  • --threshold NUMBER:设置稳定的部分结果阈值。 默认值为 3。 此选项仅适用于使用 realTime 标记的情况。 有关详细信息,请参阅获取部分结果概念。

清理资源

可以使用 Azure 门户Azure 命令行接口 (CLI) 删除创建的语音资源。

参考文档 | 包 (Go) | GitHub 上的其他示例

在本快速入门中,你将运行控制台应用,以使用语音转文本创建字幕

提示

尝试使用 Speech Studio,并选择示例视频剪辑以查看实时处理或脱机处理的字幕结果。

先决条件

设置环境

检查是否存在任何特定于平台的安装步骤

你还必须安装用于已压缩的输入音频的 GStreamer

通过语音创建字幕

按照以下步骤生成并运行字幕创建快速入门代码示例。

  1. scenarios/go/captioning/ 示例文件从 GitHub 下载或复制到本地目录中。

  2. 在与 captioning.go 相同的目录中打开命令提示符。

  3. 运行以下命令以创建 go.mod 文件并使其链接到 GitHub 上托管的语音 SDK 组件:

    go mod init captioning
    go get github.com/Microsoft/cognitive-services-speech-sdk-go
    
  4. 生成 GO 模块。

    go build
    
  5. 使用首选命令行参数运行应用程序。 请参阅用法和参数以了解可用选项。 下面是一个示例:

    go run captioning --key YourSubscriptionKey --region YourServiceRegion --input caption.this.mp4 --format any --output caption.output.txt --srt --recognizing --threshold 5 --profanity mask --phrases "Contoso;Jessie;Rehaan"
    

    YourSubscriptionKey 替换为语音资源密钥,并将 YourServiceRegion 替换为语音资源区域,例如 chinanorth2chinaeast2。 确保 --input--output 指定的路径有效。 否则,必须更改路径。

    重要

    完成后,请记住将密钥从代码中删除,并且永远不要公开发布该密钥。 对于生产来说,请使用安全的方式存储和访问凭据,例如 Azure Key Vault。 有关详细信息,请参阅 Azure AI 服务安全性一文。

检查结果

包含完整字幕的输出文件会写入 caption.output.txt。 中间结果显示在控制台中:

00:00:00,180 --> 00:00:01,600
Welcome to

00:00:00,180 --> 00:00:01,820
Welcome to applied

00:00:00,180 --> 00:00:02,420
Welcome to applied mathematics

00:00:00,180 --> 00:00:02,930
Welcome to applied mathematics course

00:00:00,180 --> 00:00:03,100
Welcome to applied Mathematics course 2

00:00:00,180 --> 00:00:03,230
Welcome to applied Mathematics course 201.

SRT(SubRip 文本)时间跨度输出格式为 hh:mm:ss,fff。 有关详细信息,请参阅字幕输出格式

用法和参数

用法:go run captioning.go helper.go --key <key> --region <region> --input <input file>

连接选项包括:

  • --key:语音资源密钥。
  • --region REGION:语音资源区域。 示例:chinanorth2chinaeast2

输入选项包括:

  • --input FILE:输入文件中的音频。 默认输入为麦克风。
  • --format FORMAT:使用压缩音频格式。 仅对 --file 有效。 有效值为 alawanyflacmp3mulawogg_opus。 默认值是 any。 若要使用 wav 文件,请不要指定格式。 此选项在 JavaScript 字幕示例中不可用。 对于压缩的音频文件(如 MP4),请安装 GStreamer 并参阅如何使用压缩的输入音频

语言选项包括:

  • --languages LANG1,LANG2:为指定语言启用语言识别。 例如:en-US,ja-JP。 此选项仅在 C++、C# 和 Python 字幕示例中可用。 有关详细信息,请参阅语言识别

识别选项包括:

  • --recognizing:输出 Recognizing 事件结果。 默认输出仅为 Recognized 事件结果。 这些内容始终写入控制台,永远不会写入输出文件。 --quiet 选项可替代此选项。 有关详细信息,请参阅获取语音识别结果

准确度选项包括:

输出选项包括:

  • --help:显示此帮助并停止
  • --output FILE:将字幕输出到指定的 file。 需要此标记。
  • --srt:以 SRT(SubRip 文本)格式输出字幕。 默认格式为 WebVTT(Web 视频文本轨道)。 有关 SRT 和 WebVTT 字幕文件格式的详细信息,请参阅字幕输出格式
  • --quiet:禁止控制台输出,错误除外。
  • --profanity OPTION:有效值:raw、remove、mask。 有关详细信息,请参阅亵渎内容筛选器概念。
  • --threshold NUMBER:设置稳定的部分结果阈值。 默认值为 3。 有关详细信息,请参阅获取部分结果概念。

清理资源

可以使用 Azure 门户Azure 命令行接口 (CLI) 删除创建的语音资源。

参考文档 | GitHub 上的其他示例

在本快速入门中,你将运行控制台应用,以使用语音转文本创建字幕

提示

尝试使用 Speech Studio,并选择示例视频剪辑以查看实时处理或脱机处理的字幕结果。

先决条件

设置环境

需要先安装语音 SDK,然后才能执行其他操作。 本快速入门中的示例适用于 Microsoft 版 OpenJDK 17

  1. 安装 Apache Maven。 然后运行 mvn -v 以确认安装成功。
  2. 在项目的根目录中创建一个新 pom.xml 文件,并将以下内容复制到其中:
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.microsoft.cognitiveservices.speech.samples</groupId>
        <artifactId>quickstart-eclipse</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <build>
            <sourceDirectory>src</sourceDirectory>
            <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                <source>1.8</source>
                <target>1.8</target>
                </configuration>
            </plugin>
            </plugins>
        </build>
        <dependencies>
            <dependency>
            <groupId>com.microsoft.cognitiveservices.speech</groupId>
            <artifactId>client-sdk</artifactId>
            <version>1.40.0</version>
            </dependency>
        </dependencies>
    </project>
    
  3. 安装语音 SDK 和依赖项。
    mvn clean dependency:copy-dependencies
    
  4. 你还必须安装用于已压缩的输入音频的 GStreamer

设置环境变量。

需要对应用程序进行身份验证才能访问 Azure AI 服务。 本文介绍如何使用环境变量来存储凭据。 然后,你可以从代码访问环境变量来验证应用程序。 对于生产环境,请使用更安全的方式来存储和访问凭据。

重要

我们建议使用 Azure 资源的托管标识进行 Microsoft Entra ID 身份验证,以避免将凭据随云中运行的应用程序一起存储。

如果使用 API 密钥,请将其安全地存储在其他某个位置,例如 Azure 密钥保管库中。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。

有关 Azure AI 服务安全性的详细信息,请参阅对 Azure AI 服务的请求进行身份验证

若要为语音资源密钥和区域设置环境变量,请打开控制台窗口,并按照操作系统和开发环境的说明进行操作。

  • 要设置 SPEECH_KEY 环境变量,请将“your-key”替换为你的资源的某一个密钥。
  • 要设置 SPEECH_REGION 环境变量,请将 “your-region”替换为你的资源的某一个地区。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

注意

如果你只需要访问当前控制台中的环境变量,可使用 set(而不是 setx)来设置环境变量。

添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用 Visual Studio 作为编辑器,请在运行示例之前重启 Visual Studio。

通过语音创建字幕

按照以下步骤生成并运行字幕创建快速入门代码示例。

  1. scenarios/java/jre/captioning/ 示例文件从 GitHub 复制到项目目录中。 在环境设置中创建的 pom.xml 文件也必须在这个目录中。
  2. 打开命令提示符并运行此命令以编译项目文件。
    javac Captioning.java -cp ".;target\dependency\*" -encoding UTF-8
    
  3. 使用首选命令行参数运行应用程序。 请参阅用法和参数以了解可用选项。 示例如下:
    java -cp ".;target\dependency\*" Captioning --input caption.this.mp4 --format any --output caption.output.txt --srt --realTime --threshold 5 --delay 0 --profanity mask --phrases "Contoso;Jessie;Rehaan"
    

    重要

    确保 --input--output 指定的路径有效。 否则,必须更改路径。

    请确保按照上文所述设置 SPEECH_KEYSPEECH_REGION 环境变量。 否则,请使用 --key--region 参数。

检查结果

使用上述示例中的 realTime 选项时,输出中包含来自 Recognizing 事件的部分结果。 在此示例中,只有最终 Recognized 事件包含逗号。 逗号不是 RecognizingRecognized 事件之间的唯一区别。 有关详细信息,请参阅获取部分结果

1
00:00:00,170 --> 00:00:00,380
The

2
00:00:00,380 --> 00:00:01,770
The rainbow

3
00:00:01,770 --> 00:00:02,560
The rainbow has seven

4
00:00:02,560 --> 00:00:03,820
The rainbow has seven colors

5
00:00:03,820 --> 00:00:05,050
The rainbow has seven colors red

6
00:00:05,050 --> 00:00:05,850
The rainbow has seven colors red
orange

7
00:00:05,850 --> 00:00:06,440
The rainbow has seven colors red
orange yellow

8
00:00:06,440 --> 00:00:06,730
The rainbow has seven colors red
orange yellow green

9
00:00:06,730 --> 00:00:07,160
orange, yellow, green, blue,
indigo and Violet.

使用 --offline 选项时,最终 Recognized 事件的结果是稳定的。 输出中不包括部分结果:

1
00:00:00,170 --> 00:00:05,540
The rainbow has seven colors, red,
orange, yellow, green, blue,

2
00:00:05,540 --> 00:00:07,160
indigo and Violet.

SRT(SubRip 文本)时间跨度输出格式为 hh:mm:ss,fff。 有关详细信息,请参阅字幕输出格式

用法和参数

用法:java -cp ".;target\dependency\*" Captioning --input <input file>

连接选项包括:

  • --key:语音资源密钥。 替代 SPEECH_KEY 环境变量。 必须设置环境变量(推荐)或使用 --key 选项。
  • --region REGION:语音资源区域。 替代 SPEECH_REGION 环境变量。 必须设置环境变量(推荐)或使用 --region 选项。 示例:chinanorth2chinaeast2

重要

如果使用 API 密钥,请将其安全地存储在某个其他位置,例如 Azure Key Vault 中。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。

有关 Azure AI 服务安全性的详细信息,请参阅对 Azure AI 服务的请求进行身份验证

输入选项包括:

  • --input FILE:输入文件中的音频。 默认输入为麦克风。
  • --format FORMAT:使用压缩音频格式。 仅对 --file 有效。 有效值为 alawanyflacmp3mulawogg_opus。 默认值是 any。 若要使用 wav 文件,请不要指定格式。 此选项在 JavaScript 字幕示例中不可用。 对于压缩的音频文件(如 MP4),请安装 GStreamer 并参阅如何使用压缩的输入音频

语言选项包括:

  • --language LANG:使用相应支持的区域设置之一指定语言。 将字幕分行时使用此选项。 默认值为 en-US

识别选项包括:

  • --offline:输出脱机结果。 重写 --realTime。 默认输出模式处于脱机状态。
  • --realTime:输出实时结果。

实时输出包括 Recognizing 事件结果。 默认脱机输出仅为 Recognized 事件结果。 这些内容始终写入控制台,永远不会写入输出文件。 --quiet 选项可替代此选项。 有关详细信息,请参阅获取语音识别结果

准确度选项包括:

输出选项包括:

  • --help:显示此帮助并停止
  • --output FILE:将字幕输出到指定的 file。 需要此标记。
  • --srt:以 SRT(SubRip 文本)格式输出字幕。 默认格式为 WebVTT(Web 视频文本轨道)。 有关 SRT 和 WebVTT 字幕文件格式的详细信息,请参阅字幕输出格式
  • --maxLineLength LENGTH:将字幕每行的最大字符数设置为 LENGTH。 最小值为 20。 默认值为 37(中文为 30)。
  • --lines LINES:将字幕的行数设置为 LINES。 最小值为 1。 默认值为 2。
  • --delay MILLISECONDS:延迟每条字幕显示的毫秒数,以模拟实时体验。 此选项仅适用于使用 realTime 标记的情况。 最小值为 0.0。 默认值为 1000。
  • --remainTime MILLISECONDS:如果一条字幕未被另一条字幕替换,则应在屏幕上保留的毫秒数。 最小值为 0.0。 默认值为 1000。
  • --quiet:禁止控制台输出,错误除外。
  • --profanity OPTION:有效值:raw、remove、mask。 有关详细信息,请参阅亵渎内容筛选器概念。
  • --threshold NUMBER:设置稳定的部分结果阈值。 默认值为 3。 此选项仅适用于使用 realTime 标记的情况。 有关详细信息,请参阅获取部分结果概念。

清理资源

可以使用 Azure 门户Azure 命令行接口 (CLI) 删除创建的语音资源。

参考文档 | 包 (npm) | GitHub 上的其他示例 | 库源代码

在本快速入门中,你将运行控制台应用,以使用语音转文本创建字幕

提示

尝试使用 Speech Studio,并选择示例视频剪辑以查看实时处理或脱机处理的字幕结果。

先决条件

设置环境

需要先安装适用于 JavaScript 的语音 SDK,然后才能执行其他操作。 如果只是需要用于安装的包名称,请运行 npm install microsoft-cognitiveservices-speech-sdk。 有关安装说明指南,请参阅 SDK 安装指南

通过语音创建字幕

按照以下步骤生成并运行字幕创建快速入门代码示例。

  1. scenarios/javascript/node/captioning/ 示例文件从 GitHub 复制到项目目录中。

  2. 在与 Captioning.js 相同的目录中打开命令提示符。

  3. 安装适用于 JavaScript 的语音 SDK:

    npm install microsoft-cognitiveservices-speech-sdk
    
  4. 使用首选命令行参数运行应用程序。 请参阅用法和参数以了解可用选项。 下面是一个示例:

    node captioning.js --key YourSubscriptionKey --region YourServiceRegion --input caption.this.wav --output caption.output.txt --srt --recognizing --threshold 5 --profanity mask --phrases "Contoso;Jessie;Rehaan"
    

    YourSubscriptionKey 替换为语音资源密钥,并将 YourServiceRegion 替换为语音资源区域,例如 chinanorth2chinaeast2。 确保 --input--output 指定的路径有效。 否则,必须更改路径。

    注意

    适用于 JavaScript 的语音 SDK 不支持压缩的输入音频。 必须使用 WAV 文件,如示例中所示。

    重要

    完成后,请记住将密钥从代码中删除,并且永远不要公开发布该密钥。 对于生产来说,请使用安全的方式存储和访问凭据,例如 Azure Key Vault。 有关详细信息,请参阅 Azure AI 服务安全性一文。

检查结果

包含完整字幕的输出文件会写入 caption.output.txt。 中间结果显示在控制台中:

00:00:00,180 --> 00:00:01,600
Welcome to

00:00:00,180 --> 00:00:01,820
Welcome to applied

00:00:00,180 --> 00:00:02,420
Welcome to applied mathematics

00:00:00,180 --> 00:00:02,930
Welcome to applied mathematics course

00:00:00,180 --> 00:00:03,100
Welcome to applied Mathematics course 2

00:00:00,180 --> 00:00:03,230
Welcome to applied Mathematics course 201.

SRT(SubRip 文本)时间跨度输出格式为 hh:mm:ss,fff。 有关详细信息,请参阅字幕输出格式

用法和参数

用法:node captioning.js --key <key> --region <region> --input <input file>

连接选项包括:

  • --key:语音资源密钥。
  • --region REGION:语音资源区域。 示例:chinanorth2chinaeast2

输入选项包括:

  • --input FILE:输入文件中的音频。 默认输入为麦克风。
  • --format FORMAT:使用压缩音频格式。 仅对 --file 有效。 有效值为 alawanyflacmp3mulawogg_opus。 默认值是 any。 若要使用 wav 文件,请不要指定格式。 此选项在 JavaScript 字幕示例中不可用。 对于压缩的音频文件(如 MP4),请安装 GStreamer 并参阅如何使用压缩的输入音频

语言选项包括:

  • --languages LANG1,LANG2:为指定语言启用语言识别。 例如:en-US,ja-JP。 此选项仅在 C++、C# 和 Python 字幕示例中可用。 有关详细信息,请参阅语言识别

识别选项包括:

  • --recognizing:输出 Recognizing 事件结果。 默认输出仅为 Recognized 事件结果。 这些内容始终写入控制台,永远不会写入输出文件。 --quiet 选项可替代此选项。 有关详细信息,请参阅获取语音识别结果

准确度选项包括:

输出选项包括:

  • --help:显示此帮助并停止
  • --output FILE:将字幕输出到指定的 file。 需要此标记。
  • --srt:以 SRT(SubRip 文本)格式输出字幕。 默认格式为 WebVTT(Web 视频文本轨道)。 有关 SRT 和 WebVTT 字幕文件格式的详细信息,请参阅字幕输出格式
  • --quiet:禁止控制台输出,错误除外。
  • --profanity OPTION:有效值:raw、remove、mask。 有关详细信息,请参阅亵渎内容筛选器概念。
  • --threshold NUMBER:设置稳定的部分结果阈值。 默认值为 3。 有关详细信息,请参阅获取部分结果概念。

清理资源

可以使用 Azure 门户Azure 命令行接口 (CLI) 删除创建的语音资源。

参考文档 | 包(下载) | GitHub 上的其他示例

适用于 Objective-C 的语音 SDK 确实支持获取字幕的语音识别结果,但我们尚未在此处提供相关指南。 请选择其他编程语言开始了解相关概念,或参阅本文开头链接的 Objective-C 引用和示例。

参考文档 | 包(下载) | GitHub 上的其他示例

适用于 Swift 的语音 SDK 确实支持获取字幕的语音识别结果,但我们尚未在此处提供相关指南。 请选择其他编程语言开始了解相关概念,或参阅本文开头链接的 Swift 引用和示例。

参考文档 | 包 (PyPi) | GitHub 上的其他示例

在本快速入门中,你将运行控制台应用,以使用语音转文本创建字幕

提示

尝试使用 Speech Studio,并选择示例视频剪辑以查看实时处理或脱机处理的字幕结果。

先决条件

设置环境

适用于 Python 的语音 SDK 可用作 Python 包索引 (PyPI) 模块。 适用于 Python 的语音 SDK 与 Windows、Linux 和 macOS 兼容。

  1. 安装 3.10 或更高版本的 Python。 首先请查看 SDK 安装指南以了解更多要求
  2. 你还必须安装用于已压缩的输入音频的 GStreamer

设置环境变量。

需要对应用程序进行身份验证才能访问 Azure AI 服务。 本文介绍如何使用环境变量来存储凭据。 然后,你可以从代码访问环境变量来验证应用程序。 对于生产环境,请使用更安全的方式来存储和访问凭据。

重要

我们建议使用 Azure 资源的托管标识进行 Microsoft Entra ID 身份验证,以避免将凭据随云中运行的应用程序一起存储。

如果使用 API 密钥,请将其安全地存储在其他某个位置,例如 Azure 密钥保管库中。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。

有关 Azure AI 服务安全性的详细信息,请参阅对 Azure AI 服务的请求进行身份验证

若要为语音资源密钥和区域设置环境变量,请打开控制台窗口,并按照操作系统和开发环境的说明进行操作。

  • 要设置 SPEECH_KEY 环境变量,请将“your-key”替换为你的资源的某一个密钥。
  • 要设置 SPEECH_REGION 环境变量,请将 “your-region”替换为你的资源的某一个地区。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

注意

如果你只需要访问当前控制台中的环境变量,可使用 set(而不是 setx)来设置环境变量。

添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用 Visual Studio 作为编辑器,请在运行示例之前重启 Visual Studio。

通过语音创建字幕

按照以下步骤生成并运行字幕创建快速入门代码示例。

  1. scenarios/python/console/captioning/ 示例文件从 GitHub 下载或复制到本地目录中。
  2. 在与 captioning.py 相同的目录中打开命令提示符。
  3. 运行以下命令来安装语音 SDK:
    pip install azure-cognitiveservices-speech
    
  4. 使用首选命令行参数运行应用程序。 请参阅用法和参数以了解可用选项。 示例如下:
    python captioning.py --input caption.this.mp4 --format any --output caption.output.txt --srt --realTime --threshold 5 --delay 0 --profanity mask --phrases "Contoso;Jessie;Rehaan"
    

    重要

    确保 --input--output 指定的路径有效。 否则,必须更改路径。

    请确保按照上文所述设置 SPEECH_KEYSPEECH_REGION 环境变量。 否则,请使用 --key--region 参数。

检查结果

使用上述示例中的 realTime 选项时,输出中包含来自 Recognizing 事件的部分结果。 在此示例中,只有最终 Recognized 事件包含逗号。 逗号不是 RecognizingRecognized 事件之间的唯一区别。 有关详细信息,请参阅获取部分结果

1
00:00:00,170 --> 00:00:00,380
The

2
00:00:00,380 --> 00:00:01,770
The rainbow

3
00:00:01,770 --> 00:00:02,560
The rainbow has seven

4
00:00:02,560 --> 00:00:03,820
The rainbow has seven colors

5
00:00:03,820 --> 00:00:05,050
The rainbow has seven colors red

6
00:00:05,050 --> 00:00:05,850
The rainbow has seven colors red
orange

7
00:00:05,850 --> 00:00:06,440
The rainbow has seven colors red
orange yellow

8
00:00:06,440 --> 00:00:06,730
The rainbow has seven colors red
orange yellow green

9
00:00:06,730 --> 00:00:07,160
orange, yellow, green, blue,
indigo and Violet.

使用 --offline 选项时,最终 Recognized 事件的结果是稳定的。 输出中不包括部分结果:

1
00:00:00,170 --> 00:00:05,540
The rainbow has seven colors, red,
orange, yellow, green, blue,

2
00:00:05,540 --> 00:00:07,160
indigo and Violet.

SRT(SubRip 文本)时间跨度输出格式为 hh:mm:ss,fff。 有关详细信息,请参阅字幕输出格式

用法和参数

用法:python captioning.py --input <input file>

连接选项包括:

  • --key:语音资源密钥。 替代 SPEECH_KEY 环境变量。 必须设置环境变量(推荐)或使用 --key 选项。
  • --region REGION:语音资源区域。 替代 SPEECH_REGION 环境变量。 必须设置环境变量(推荐)或使用 --region 选项。 示例:chinanorth2chinaeast2

重要

如果使用 API 密钥,请将其安全地存储在某个其他位置,例如 Azure Key Vault 中。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。

有关 Azure AI 服务安全性的详细信息,请参阅对 Azure AI 服务的请求进行身份验证

输入选项包括:

  • --input FILE:输入文件中的音频。 默认输入为麦克风。
  • --format FORMAT:使用压缩音频格式。 仅对 --file 有效。 有效值为 alawanyflacmp3mulawogg_opus。 默认值是 any。 若要使用 wav 文件,请不要指定格式。 此选项在 JavaScript 字幕示例中不可用。 对于压缩的音频文件(如 MP4),请安装 GStreamer 并参阅如何使用压缩的输入音频

语言选项包括:

  • --language LANG:使用相应支持的区域设置之一指定语言。 将字幕分行时使用此选项。 默认值为 en-US

识别选项包括:

  • --offline:输出脱机结果。 重写 --realTime。 默认输出模式处于脱机状态。
  • --realTime:输出实时结果。

实时输出包括 Recognizing 事件结果。 默认脱机输出仅为 Recognized 事件结果。 这些内容始终写入控制台,永远不会写入输出文件。 --quiet 选项可替代此选项。 有关详细信息,请参阅获取语音识别结果

准确度选项包括:

输出选项包括:

  • --help:显示此帮助并停止
  • --output FILE:将字幕输出到指定的 file。 需要此标记。
  • --srt:以 SRT(SubRip 文本)格式输出字幕。 默认格式为 WebVTT(Web 视频文本轨道)。 有关 SRT 和 WebVTT 字幕文件格式的详细信息,请参阅字幕输出格式
  • --maxLineLength LENGTH:将字幕每行的最大字符数设置为 LENGTH。 最小值为 20。 默认值为 37(中文为 30)。
  • --lines LINES:将字幕的行数设置为 LINES。 最小值为 1。 默认值为 2。
  • --delay MILLISECONDS:延迟每条字幕显示的毫秒数,以模拟实时体验。 此选项仅适用于使用 realTime 标记的情况。 最小值为 0.0。 默认值为 1000。
  • --remainTime MILLISECONDS:如果一条字幕未被另一条字幕替换,则应在屏幕上保留的毫秒数。 最小值为 0.0。 默认值为 1000。
  • --quiet:禁止控制台输出,错误除外。
  • --profanity OPTION:有效值:raw、remove、mask。 有关详细信息,请参阅亵渎内容筛选器概念。
  • --threshold NUMBER:设置稳定的部分结果阈值。 默认值为 3。 此选项仅适用于使用 realTime 标记的情况。 有关详细信息,请参阅获取部分结果概念。

清理资源

可以使用 Azure 门户Azure 命令行接口 (CLI) 删除创建的语音资源。

在本快速入门中,你将运行控制台应用,以使用语音转文本创建字幕

提示

尝试使用 Speech Studio,并选择示例视频剪辑以查看实时处理或脱机处理的字幕结果。

先决条件

设置环境

请按照以下步骤操作,并参阅语音 CLI 快速入门,了解适用于你的平台的其他要求。

  1. 运行以下 .NET CLI 命令以安装语音 CLI:

    dotnet tool install --global Microsoft.CognitiveServices.Speech.CLI
    
  2. 运行以下命令以配置你的语音资源密钥和区域。 将 SUBSCRIPTION-KEY 替换为语音资源密钥,将 REGION 替换为语音资源区域。

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

你还必须安装用于已压缩的输入音频的 GStreamer

通过语音创建字幕

使用语音 CLI,可以从包含音频的任何类型的媒体中输出 SRT(SubRip 文本)和 WebVTT(Web 视频文本轨道)字幕。

若要识别文件中的音频并输出 WebVtt (vtt) 和 SRT (srt) 字幕,请执行以下步骤。

  1. 请确保路径中包含一个名为 caption.this.mp4 的输入文件。

  2. 运行以下命令,以从视频文件输出字幕:

    spx recognize --file caption.this.mp4 --format any --output vtt file - --output srt file - --output each file - @output.each.detailed --property SpeechServiceResponse_StablePartialResultThreshold=5 --profanity masked --phrases "Constoso;Jessie;Rehaan"
    

    SRT 和 WebVTT 字幕被输出到控制台,如下所示:

    1
    00:00:00,180 --> 00:00:03,230
    Welcome to applied Mathematics course 201.
    WEBVTT
    
    00:00:00.180 --> 00:00:03.230
    Welcome to applied Mathematics course 201.
    {
      "ResultId": "561a0ea00cc14bb09bd294357df3270f",
      "Duration": "00:00:03.0500000"
    }
    

用法和参数

下面是关于上一命令中可选参数的详细信息:

  • --file caption.this.mp4 --format any:输入文件中的音频。 默认输入为麦克风。 对于压缩的音频文件(如 MP4),请安装 GStreamer 并参阅如何使用压缩的输入音频
  • --output vtt file ---output srt file -:将 WebVTT 和 SRT 字幕输出到标准输出。 有关 SRT 和 WebVTT 字幕文件格式的详细信息,请参阅字幕输出格式。 有关 --output 参数的详细信息,请参阅语音 CLI 输出选项
  • @output.each.detailed:输出带有文本、偏移量和持续时间的事件结果。 有关详细信息,请参阅获取语音识别结果
  • --property SpeechServiceResponse_StablePartialResultThreshold=5:可以请求语音服务返回更少且更准确的 Recognizing 事件。 在此示例中,语音服务在向你返回部分结果之前必须至少确认五次字词。 有关详细信息,请参阅获取部分结果概念。
  • --profanity masked:可以指定是屏蔽、删除还是显示识别结果中的亵渎内容。 有关详细信息,请参阅亵渎内容筛选器概念。
  • --phrases "Constoso;Jessie;Rehaan":可以指定要识别的短语列表,例如 Contoso、Jessie 和 Rehaan。 有关详细信息,请参阅使用短语列表提高识别性能

清理资源

可以使用 Azure 门户Azure 命令行接口 (CLI) 删除创建的语音资源。

后续步骤