亚马逊AWS官方博客

Amazon Transcribe – 大规模实现准确的语音转文本

今天,我们将发布 Amazon Transcribe 的非公开预览版,这是一种自动语音识别 (ASR) 服务,使开发人员可以轻松地为应用程序添加语音转文本功能。随着带宽和连接情况的不断改进,世界上越来越多的数据以视频和音频格式进行存储。人们创建和使用所有这类数据的速度比以往任何时候都快。对于企业来说,拥有从所有这些丰富的多媒体内容中获取价值的一些手段是非常重要的。利用 Amazon Transcribe,您可以通过高效且可扩展的 API 节省成本昂贵的手动转录过程。

您可以通过使用 API 启动一个任务来分析以许多常见格式 (WAV、MP3、Flac 等) 存储在 Amazon Simple Storage Service (S3) 上的音频文件。您将收到每个单词的带时间戳的详细准确的录音文本以及推断的标点符号。在预览过程中,您可以使用异步转录 API 来以英语或西班牙语转录语音。

很多公司正在寻求从其现有的目录及其传入数据中获取价值。通过转录这些存储的媒体,公司可以:

  • 分析客户电话数据
  • 自动创建副标题
  • 基于内容确定广告目标
  • 针对音频和视频内容存档启用丰富的搜索功能

您可以使用 AWS 命令行界面 (CLI)AWS 软件开发工具包 或 Amazon Transcribe 控制台轻松启动转录任务。

Amazon Transcribe 目前提供 3 个 API 操作 (用途不言自明):

  • StartTranscriptionJob
  • GetTranscriptionJob
  • ListTranscriptionJobs

以下是一个简单的 Python 脚本,用于启动一个任务并轮询,直到完成该任务:

from __future__ import print_function
import time
import boto3
transcribe = boto3.client('transcribe')
job_name = "RandallTest1"
job_uri = "https://s3-us-west-2.amazonaws.com/randhunt-transcribe-demos/test.flac"
transcribe.start_transcription_job(
    TranscriptionJobName=job_name,
    Media={'MediaFileUri': job_uri},
    MediaFormat='flac',
    LanguageCode='en-US',
    MediaSampleRateHertz=44100
)
while True:
    status = transcribe.get_transcription_job(TranscriptionJobName=job_name)
    if status['TranscriptionJob']['TranscriptionJobStatus'] in ['COMPLETED', 'FAILED']:
        break
	print("Not ready yet...")
    time.sleep(5)
print(status)

完成的任务的结果将链接到一个以 JSON 格式包含我们的转录的 Amazon Simple Storage Service (S3) 预签名 URL:

{
  "jobName": "RandallTest1",
  "results": {
  	"transcripts": [{"transcript": "Hello World", "confidence": 1}],
    "items": [
      {
      	"start_time": "0.880", "end_time": "1.300",
        "alternatives": [{"confidence": 0.91, "word": "Hello"}]
      },
      {
        "start_time": "1.400", "end_time": "1.620",
        "alternatives": [{"confidence": 0.84, "word": "World"}]
      }
  	]
  },
  "status": "COMPLETED"
}

如您所见,您获得了每个单词的时间戳和置信度得分。

无论是单独使用还是与其他 Amazon AI 服务结合使用,这都是一项功能强大的服务,我迫不及待地想要看到我们的客户会使用这项服务构建什么!

Randall

附言:
您可能已注意到,这非常适合于 AWS Step Functions,我也是这么认为的。以下是我可能使用的工作流程: