将语音或音频转换为文本有各种各样的用途,可以为应用提供广泛的高级功能。假设您正在运营一个呼叫中心,需要同时处理数千个来电。您想要发现并分析各种趋势,比如,来电者是否在使用特定产品或特性时出现问题,或者来电者是否对于某些事情感到沮丧或难过。

您可能还想识别并确定呼叫中心对话中重复词汇的使用频率。能够分析这类信息对于业务来说至关重要。例如,如果发现来电者心情沮丧,不断重复 “broken” 一词,您就可以采取行动来改善用户体验。首先,您可以快速指导支持团队帮助解决这个具体问题,提供解决方案或应变方法。其次,您可以修复或改进经常发生故障的产品。

几乎任何音频都可以转换成文本,然后进行文本分析,获得对您至关重要的趋势和分析洞察。可以用于分析文本的一个工具就是 Watson Tone Analyzer 服务。

Speech to Text API

如何将音频转录为文本?一种选择就是使用 Watson Speech to Text API。该 API 简单易用;您可以指向音频文件,获得 JSON 文本和一些其他元数据信息作为输出。这是使用该 API 最简单、最快速的方式。

您还可以使用更加高级的功能,比如上传自定义模型。自定义模型可帮助转录特定领域的音频。例如,假设需要转录医学领域的音频。该音频可能使用特定领域的词汇(比如疾病名称),即取即用的 API 可能无法完全理解。通过上传自定义模型,您可以训练该 API 更好地进行转录,最重要的是实现准确性。

我们来看几个示例;我将在以后的博客文章中介绍自定义模型。

创建 Speech to Text 服务

在本部分,我们将创建新的 Watson Speech to Text 服务。

  1. 注册一个免费的 IBM Cloud 帐户或登录现有帐户
  2. 转至 Services Catalog
  3. 在左侧菜单中单击 AI
  4. 找到并单击 Text to Speech API 框。
  5. 在下一页,您将看到服务名称,名称可以随意更改。单击 Create ,创建 Text to Speech 服务。

创建服务之后,您将看到以下页面。您可以单击 Show 来显示服务凭证。

Speech to Text service
Speech to Text 服务

既然您已创建了服务,现在就可立即试用!

运行 Speech to Text 服务

运行该服务最快的方式就是从使用 cURL 程序的命令行开始,这就是我们接下来要做的事情。请牢记:Watson 提供 10 个针对各种语言的 SDK。您可以在 IBM Watson APIs GitHub 页面上查看并试用这些 SDK。

首先,您需要一个音频文件。出于测试目的,您可以下载此样本文件

从终端窗口浏览至保存文件的目录,然后运行以下 cURL 命令。您需要使用您的服务中的信息来替换用户名和密码。您可以通过单击服务页面上的 Show 来查看此信息。

curl -X POST -u {username}:{password} \
 --header "Content-Type: audio/flac" \
 --data-binary @audio-file.flac \
 "https://stream.watsonplatform.net/speech-to-text/api/v1/recognize"


该示例没有使用任何额外的参数。

您应该看到以下输出:

{
 "results": [
    {
       "alternatives": [
          {
             "confidence": 0.889,
             "transcript": "several tornadoes touch down as a 
                           line of severe thunderstorms swept 
                           through Colorado on Sunday "
          }
       ],
       "final": true
   }
 ],
 "result_index": 0
}


  • transcript 字段是转录的文本。
  • confidence 字段是转录的服务置信度,范围为 0-1。越接近 1,转录正确的服务置信度就越高。
  • alternatives 字段可能显示替代的转录(尽管本示例中不存在)。

如果想要尝试其他示例,可以下载来自维基媒体的长音频文件,然后再次运行该命令(请注意,我重命名了此文件):

curl -X-X POST -u {username}:{password} \
 --header "Content-Type: audio/flac" \
 --data-binary @Tim.oga \
 "https://stream.watsonplatform.net/speech-to-text/api/v1/recognize"


本例中的输出为:

 {
    "results": [
       {
          "alternatives": [
             {
                "confidence": 0.845, 
                "transcript": "what is not a replacement for the web the web continues but when you think of the files on your computer the the documents into them the email messages and letters and things are things that you can put on the web now but then but their data files on their light kept calendars and downloaded spread sheets and things which you can't really put on the web because if you put a condom on the way we have to put it up on this document and "
             }
          ], 
          "final": true
       }, 
       {
          "alternatives": [
             {
                "confidence": 0.787, 
                "transcript": "with a computer you got all the things you need to do with data live with the kind of the need to get a look at in a debut month you need to compare the other calendars and see what you're doing at same time so the problem is that the moment that the data that's out there isn't in a form that we can actually post as it and use it so we not using it powerful enough and it's sort of in Dayton form for day to day life but also its but also for scientists and people use lots of data "
             }
          ], 
       "final": true
       }
    ], 
    "result_index": 0
}


此通电话的输出包含两个转录和两个稍有不同的置信度得分。

cURL 命令是开发人员运行和测试 API 的最佳助手。但是,如果想要使用更加直观的界面,我建议您下载并安装 Postman 程序。

下面是运行上述相同请求的 Postman 的外观图:

Postman client
Postman 客户端

请注意,我没有在 URL 中使用用户名和密码,而是在 Authentication 选项卡(就在服务 URL 的下面)中输入了用户名和密码。因为 Speech to Text 使用 Basic Authentication,所以输入用户名和密码后,您就可以切换到 Headers 选项卡,在此查看 Authorization 标头值。

这些实例试用起来非常有趣,但是我们来看一个更真实的例子。

通过 Nexmo 进行录音和转录

Nexmo 是一个通信即服务平台,提供语音、消息传递以及身份认证等服务,通过内置通信帮助轻松构建应用。

Michael Heap 是 Nexmo 开发大使,他发布了一个非常不错的教程,讲述如何通过 Nexmo Voice API 进行电话录音,然后使用 Speech to Text API 转录这些电话。我建议您阅读这篇文章并且试用该语音 API。

下面是简短的摘录内容;您可以访问以下链接,跳至完整的博客文章:

在我们的语音 API 产品中,Nexmo 可用于对部分(或全部)电话内容进行录音,电话挂断后即可获取音频。现在,我们很高兴地宣布这项功能已有了一项新的增强特性:录音分割。录音分割可使电话转录等常见任务更加简单。

启用录音分割功能时,下载的录音将在左声道中包含参与者 A(我们称她为 Alice)的声音,而在右声道中包含参与者 B(我们称他为 Bob)的声音。这就使您能够轻松处理来自单个参与者的音频。

在本文中,我们将会演示一个简单的用例。Alice 致电银行,查询账户相关信息,Bob 是接听来电的客服代表。

我希望这篇文章对您有所帮助。确保注册一个免费的 IBM Cloud 帐户来尝试这些步骤,然后跳至 Nexmo 博客来了解更多信息。继续关注未来有关如何自定义模型的博客文章,如有任何问题,请随时与我联系

继续阅读 Nexmo 博客

 

本文翻译自: Convert speech to text with Watson and Nexmo (2018-07-16)

加入讨论