質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

278閲覧

取得した文字列を音声合成

shitucyou

総合スコア16

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/02/21 03:24

編集2019/02/21 03:26

前提・実現したいこと

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/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

firedfly

2019/02/21 06:11 編集

こんにちは。 コマンドプロンプトで echo "test" | open_jtalk... を実行するとうまくいくのでしょうか。
shitucyou

2019/02/21 07:07

こんにちは。 いまコマンドプロントで確認してみるとhtsvoiceファイルの指定先を間違えていました。 適切なファイルを指定することにより解決できました。 コメントありがとうございます。
guest

回答1

0

自己解決

適切なファイルを指定することにより解決できました。

投稿2019/02/21 07:07

shitucyou

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問