前提・実現したいこと
ICカードを読み込めばkintoneのアプリのフィールドから取得した文字列を音声合成で読み上げようとしています。
発生している問題・エラーメッセージ
現状ICカードリーダーにICカードをタッチすると、文字列は取得できるのですが音声合成はできていない状態です。
該当のソースコード
Python
1#!/usr/bin/python 2# _*_ coding: utf-8 _*_ 3 4import requests 5import subprocess 6import binascii 7import nfc 8import time 9 10import pykintone 11 12 13URL = "URL" 14APP_ID = "ID" 15API_TOKEN = "token" 16 17 18class KINTONE(object): 19 def connected(self,tag): 20 self.idm = binascii.hexlify(tag.idm) 21 self.pmm = binascii.hexlify(tag.pmm) 22 return True 23 24 def read_id(self): 25 with nfc.ContactlessFrontend('usb') as clf: 26 clf.connect(rdwr={'on-connect': self.connected}) 27 clf.close() 28 return True 29 30 31 def PostToKintone(self, url, appId, apiToken): 32 record={'idm':{'value' : knt.idm},'pmm':{'value' : knt.pmm}} 33 34 data = {'app':appId,'record':record} 35 headers = {"X-Cybozu-API-Token": apiToken, "Content-Type" : "application/json"} 36 resp=requests.post(url+'/k/v1/record.json',json=data,headers=headers) 37 38 return resp 39 40 41if __name__ == '__main__': 42 while True: 43 44 knt = KINTONE() 45 knt.read_id() 46 47 **r = pykintone.app("...", "ID", "...").select('limit 1') 48 49 records = r.records 50 51 if r.ok: 52 for rec in records: 53 print(rec['txt']['value']) 54 tec = rec['txt']['value'] 55 else: 56 print(r.error) 57 58 command = "echo \"%s\" | open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic -m /usr/share/hts-voice/mei/mei_normal.htsvoice -ow /dev/stdout | aplay --quiet" % (tec) 59 proc = subprocess.Popen( 60 command, 61 shell = True, 62 stdin = subprocess.PIPE, 63 stdout = subprocess.PIPE, 64 stderr = subprocess.PIPE)** 65 66 resp=knt.PostToKintone(URL, APP_ID, API_TOKEN)
試したこと
コマンドを利用して音声合成させている。
**内で文字列を取得して音声合成させようとしている
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー