再探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框架。