再探Watson服务(二)

这是这个系列的第二篇文章,主要基于上一篇文章中提到服务进行一些基础的功能实现。

二. 基本服务简单使用

2.1 speech to text(语音文本转换)

假定已经完成关于bluemix的注册和Watson服务的创建。详细过程将我的上个系列文章。

2.1.1 使用watson_developer_cloud

创建test.py,使用自己录制的一段音频test.wav(就说了一句hello world)。

from watson_developer_cloud import SpeechToTextV1
import json
import wave

test = SpeechToTextV1(username="你的用户名", password="你的密码")

audio_file = open("test.wav", "rb")

#print(audio_file.getnchannels())

print (json.dumps(test.recognize(audio_file, content_type="audio/wav"), indent=2))

注意,这里用户名和密码是创建服务后,默认生成的。不是bluemix的账户名和密码。
结果如下:

{
  "results": [
    {
      "alternatives": [
        {
          "confidence": 0.19,
          "transcript": "hello world "
        }
      ],
      "final": true
    }
  ],
  "result_index": 0
}

很简单的调用。但是在实际应用中,不可能说是先录好一段音,然后打包上传,再等待结果分析,所以下面着重介绍一下另一种接口实现方式--WebSocket

2.1.2 使用WebSocket接口

首先,我们来看下什么是WebSocket。

WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。一开始的握手需要借助HTTP请求完成。--百度

即时通讯是最常见的一种网络应用,常见的方式是通过http协议。但是http协议是一种非持久的单向的网络协议。它有一个很大的缺点,就是需要浏览器不断的发送请求,而且通常情况下,请求头部都很长,这样就会浪费大量的资源在很多不必要的请求信息中。
而WebSocket弥补了这一缺点,它是一种全双工通信协议,在通过http建立握手后,单独建立一条tcp通道用以服务器和浏览器之间的信息传送。

不知道为什么要叫WebSocket,和socket关系并不是很大。socket是传输层协议,而WebSocket是一个典型的应用层协议。大概是因为建立WebSocket后,服务器和客户端都可以直接进行信息交互,就像socket一样,又因为它是应用层的,所以起了个这种复合型名字(我瞎猜的。。。)

我使用ws4py进行试验,这是一个基于python实现的websocket框架。

相关推荐