Essayez le discours de Watson au texte. Essayez d'exécuter l'exemple à partir du site de démonstration ci-dessous (https://www.ibm.com/blogs/watson/2016/07/getting-robots-listen-using-watsons-speech-text-service/)
Watson's Voice Authentication (Speech to Text) pour créer Raspberry Pi Robo qui peut convertir le son vidéo en texte en temps réel Essayer.
L'objectif final est l'authentification et la transcription vocales avec Raspberry Pi 3 x Julius x Watson (Speech to Text), comme indiqué dans la figure ci-dessous. (http://qiita.com/nanako_ut/items/1e044eb494623a3961a5)
Cette fois, nous rechercherons la méthode d'authentification vocale watson dans la partie (4) de la figure ci-dessous.
Ce qui suit est supposé être prêt.
Spécifiez le fichier vocal (test.wat) et téléchargez-le sur watson via une connexion HTTP
curl -X POST -u username:passward --header "Content-Type: audio/wav" --header "Transfer-Encoding: chunked" --data-binary @test.wav "https://stream.watsonplatform.net/speech-to-text/api/v1/recognize?model=ja-JP_BroadbandModel"
Quelque chose est revenu. Mais ... les personnages sont déformés ... Raspeye est UTF-8, et les caractères sont déformés en raison du résultat de l'analyse japonaise (S-JIS?)? ??
Implémenté en référence à cette source d'exemple Getting robots to listen: Using Watson’s Speech to Text service
bibliothèque python pour l'installation de watson watson-developer-cloud-0.23.0
Non requis si pip est déjà installé. Ce n'était pas dans le Rasppie que j'utilise, probablement parce que j'ai mis RASPBIAN JESSIE LITE dans Rasppie 3. .. ..
$ python -m pip -V
/usr/bin/python: No module named pip
$ sudo apt-get install python-pip
Reading package lists... Done
Building dependency tree
~ À mi-chemin ~
$ python -m pip -V
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)
mise à jour
$ sudo pip install -U pip
Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB): 1.3MB downloaded
Installing collected packages: pip
Found existing installation: pip 1.5.6
Not uninstalling pip at /usr/lib/python2.7/dist-packages, owned by OS
Successfully installed pip
Cleaning up...
$ python -m pip -V
pip 9.0.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)
$ sudo pip install --upgrade watson-developer-cloud
Collecting watson-developer-cloud
Downloading watson-developer-cloud-0.23.0.tar.gz (52kB)
~ À mi-chemin ~
Successfully installed pysolr-3.6.0 requests-2.12.5 watson-developer-cloud-0.23.0
Copiez le site référencé
watson_test1.py
from watson_developer_cloud import SpeechToTextV1
import json
stt = SpeechToTextV1(username="username", password="password")
audio_file = open("test1.wav", "rb")
print json.dumps(stt.recognize(audio_file, content_type="audio/wav"), indent=2)
Quelque chose est revenu. Il semble que le texte soit renvoyé. Cependant, cela aurait dû être une voix plus longue, mais le texte a été coupé au milieu! ?? ??
{
"results": [
{
"alternatives": [
{
"confidence": 0.438,
"transcript": "so we know it's coming Julio just say yeah lost me grow mandatory right here shone like a great kid fifth grader etan Allemand planning his fifth critics "
}
],
"final": true
}
],
"result_index": 0
}
Il semble que vous puissiez analyser la voix en temps réel en utilisant quelque chose appelé webSocket.
(https://www.html5rocks.com/ja/tutorials/websockets/basics/) La spécification WebSocket définit une API qui établit une connexion «socket» entre un navigateur Web et un serveur. En termes simples, il existe une connexion persistante entre le client et le serveur, et vous pouvez commencer à envoyer des données de chaque côté à tout moment.
Il semble.
(http://www.atmarkit.co.jp/ait/articles/1111/11/news135.html) En HTML5, un nouveau standard de communication appelé "WebSocket" a été ajouté. Fonctionnalité
Une fois qu'une connexion est établie entre le serveur et le client, les données peuvent être échangées via une communication socket sans avoir connaissance de la procédure de communication, sauf si elles sont explicitement déconnectées. Un serveur avec une connexion WebSocket et tous les clients peuvent partager les mêmes données et envoyer et recevoir en temps réel. Dans la technologie de communication conventionnelle, un en-tête HTTP est ajouté pour chaque communication, donc en plus d'envoyer et de recevoir des données en fonction du nombre de connexions, une petite quantité de trafic est générée et des ressources sont consommées. WebSocket envoie une demande d'établissement de liaison du côté client pour continuer à utiliser la connexion lors de la première connexion. Le côté serveur utilise une connexion en renvoyant une réponse de prise de contact et continue. Il semble.
Je vois. .. ..
Installer la bibliothèque ws4py pour webSocket
$ sudo pip install ws4py
Collecting ws4py
Downloading ws4py-0.3.5-py2-none-any.whl (40kB)
100% |????????????????????????????????| 40kB 661kB/s
Installing collected packages: ws4py
Successfully installed ws4py-0.3.5
Copiez le site référencé
watson_test2.py
from ws4py.client.threadedclient import WebSocketClient
import base64, time
class SpeechToTextClient(WebSocketClient):
def __init__(self):
ws_url = "wss://stream.watsonplatform.net/speech-to-text/api/v1/recognize"
username = "username"
password = "password"
auth_string = "%s:%s" % (username, password)
base64string = base64.encodestring(auth_string).replace("\n", "")
try:
WebSocketClient.__init__(self, ws_url,
headers=[("Authorization", "Basic %s" % base64string)])
self.connect()
except: print "Failed to open WebSocket."
def opened(self):
self.send('{"action": "start", "content-type": "audio/l16;rate=16000"}')
def received_message(self, message):
print message
stt_client = SpeechToTextClient()
time.sleep(3)
stt_client.close()
Les données vocales sont renvoyées.
$ python watson_test2.py
opend
Message received: {u'state': u'listening'}
sleep audio
Recording raw data 'stdin' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono
Message received: {u'results': [{u'alternatives': [{u'confidence': 0.713, u'transcript': u'over the entire course of the scalp was it was all the guys that one rings before imagine '}], u'final': True}], u'result_index': 0}
Hmmm, même si c'est en temps réel, quelle que soit la quantité de données vocales que vous envoyez, vous ne pouvez recevoir que le premier message. Je pense que nous devons en savoir un peu plus pour savoir s'il existe des options ou comment transmettre les données.
Il semble que l'interface utilisateur de bluemix change régulièrement et que l'URL Speech to text est différente de l'exemple, et elle est toujours en cours de développement. L'inconvénient est qu'il faut du temps pour enquêter. .. ..
Recommended Posts