From 8d2e2e25cae24cb749788dee0c40ccbf0281dfd4 Mon Sep 17 00:00:00 2001 From: natade-jp Date: Thu, 19 Dec 2019 00:18:12 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7=E3=83=B3?= =?UTF-8?q?=E3=82=A2=E3=83=83=E3=83=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- main/0-mainloop.js | 27 ++++++++++++++- main/13-get-ip.js | 46 ++++---------------------- main/Pod.js | 38 +++++++++++++++++++-- main/dict/main.dfa | 49 +++++++++++++-------------- main/dict/main.dict | 75 +++++++++++++++++++++--------------------- main/dict/main.grammar | 1 + main/dict/main.kisoku | 1 + main/dict/main.term | 75 +++++++++++++++++++++--------------------- main/dict/main.voca | 2 ++ main/environment.sh | 5 ++- 11 files changed, 177 insertions(+), 144 deletions(-) diff --git a/.gitignore b/.gitignore index e47cf5c..630586d 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,4 @@ jest.config.js Thumbs.db *.bak -*.json \ No newline at end of file +*.json diff --git a/main/0-mainloop.js b/main/0-mainloop.js index a6aa499..2df8758 100644 --- a/main/0-mainloop.js +++ b/main/0-mainloop.js @@ -26,7 +26,29 @@ const onWakeVoice = function(target_text, pattern) { } }; -Pod.talkText("プログラムを開始します。"); +Pod.talkText("電源供給を確認しました。"); + +{ + if(!Pod.isConnectedInternet()) { + Pod.talkText("外部ネットワークへの接続を試みます。"); + const wait_time_sec = parseFloat(env["WAIT_TIME_SEC"]); + let now_time_sec = 0; + for(let now_time_sec = 0; now_time_sec < wait_time_sec; now_time_sec += 0.5) { + if(Pod.isConnectedInternet()) { + break; + } + Pod.sleep(0.5); + } + } + if(Pod.isConnectedInternet()) { + Pod.talkText("外部ネットワークへの接続が完了しました。"); + } + else { + Pod.talkText("スタンドアロンモードで動作開始します。"); + } +} + +Pod.talkText("対話モードを開始します。"); while(true) { console.log("..."); @@ -62,6 +84,9 @@ while(true) { { search: [ /すごいですね/ ], run:(test) => {Pod.talkText("ほめても、何も出ませんよ。");} }, + { + search: [ /ありがとうございます/ ], run:(test) => {Pod.talkText("いえいえ、お安い御用です。");} + }, { search: [ /かわいいですね/ ], run:(test) => {Pod.talkText("ありがとうございます。心に受け止めておきます。");} }, diff --git a/main/13-get-ip.js b/main/13-get-ip.js index 0f2a687..e8b0bab 100644 --- a/main/13-get-ip.js +++ b/main/13-get-ip.js @@ -2,45 +2,11 @@ const Pod = require("./Pod.js"); -/* - -以下のような情報を取得できる - -1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 - link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 - inet 127.0.0.1/8 scope host lo - valid_lft forever preferred_lft forever - inet6 ::1/128 scope host - valid_lft forever preferred_lft forever -2: eth0: mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000 - link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff -3: wlan0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 - link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff - inet 192.168.11.202/24 brd 192.168.11.255 scope global noprefixroute wlan0 - valid_lft forever preferred_lft forever - inet6 XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:165a/64 scope global dynamic mngtmpaddr noprefixroute - valid_lft 14177sec preferred_lft 14177sec - inet6 XXXX::XXXX:XXXX:XXXX:XXXX/64 scope link - valid_lft forever preferred_lft forever - - */ - -const ip_data = Pod.run("ip address"); -const ip_data_line = ip_data.split("\n"); -let ip4 = null; - -for(let i = 0; i < ip_data_line.length; i++) { - const line = ip_data_line[i]; - if(/ inet /.test(line)) { - const m = line.match(/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/); - if(m) { - const get_ip4 = m[0]; - if(get_ip4 !== "127.0.0.1") { - ip4 = get_ip4; - break; - } - } - } +let ip4 = Pod.getIpAddress(); +if(ip4 === null) { + Pod.talkText("現在、外部ネットワークへ接続を行っておらず、IPアドレスは付与されておりません。"); +} +else { + Pod.talkText("私のIPアドレスは、" + ip4.replace(/\./g, " ") + "です。"); } -Pod.talkText("私のIPアドレスは、" + ip4.replace(/\./g, " ") + "です。"); diff --git a/main/Pod.js b/main/Pod.js index ff83dc6..7c969e9 100644 --- a/main/Pod.js +++ b/main/Pod.js @@ -49,13 +49,38 @@ class Pod { return Pod.run("sleepenh " + time); } + /** - * @returns {boolean} + * @returns {string|null} */ - static isConnectedInternet() { + static getIpAddress() { + /* + + 以下のような情報を取得できる + + 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 + inet 127.0.0.1/8 scope host lo + valid_lft forever preferred_lft forever + inet6 ::1/128 scope host + valid_lft forever preferred_lft forever + 2: eth0: mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000 + link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff + 3: wlan0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 + link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff + inet 192.168.11.202/24 brd 192.168.11.255 scope global noprefixroute wlan0 + valid_lft forever preferred_lft forever + inet6 XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:165a/64 scope global dynamic mngtmpaddr noprefixroute + valid_lft 14177sec preferred_lft 14177sec + inet6 XXXX::XXXX:XXXX:XXXX:XXXX/64 scope link + valid_lft forever preferred_lft forever + + */ + const ip_data = Pod.run("ip address"); const ip_data_line = ip_data.split("\n"); let ip4 = null; + for(let i = 0; i < ip_data_line.length; i++) { const line = ip_data_line[i]; if(/ inet /.test(line)) { @@ -69,7 +94,14 @@ class Pod { } } } - return ip4 !== null; + return ip4; + } + + /** + * @returns {boolean} + */ + static isConnectedInternet() { + return Pod.getIpAddress() !== null; } /** diff --git a/main/dict/main.dfa b/main/dict/main.dfa index aa26f5c..6f83965 100644 --- a/main/dict/main.dfa +++ b/main/dict/main.dfa @@ -1,4 +1,4 @@ -0 46 1 0 0 +0 47 1 0 0 1 0 2 0 0 1 1 2 0 0 1 3 3 0 0 @@ -11,44 +11,45 @@ 1 15 2 0 0 1 16 2 0 0 1 17 2 0 0 -1 27 4 0 0 +1 18 2 0 0 1 28 4 0 0 -1 29 2 0 0 +1 29 4 0 0 1 30 2 0 0 -1 36 5 0 0 -1 37 6 0 0 -1 40 7 0 0 -1 41 8 0 0 +1 31 2 0 0 +1 37 5 0 0 +1 38 6 0 0 +1 41 7 0 0 1 42 8 0 0 -2 45 9 0 0 +1 43 8 0 0 +2 46 9 0 0 3 9 2 0 0 -3 19 10 0 0 -3 24 2 0 0 -3 34 10 0 0 +3 20 10 0 0 +3 25 2 0 0 3 35 10 0 0 -4 25 2 0 0 +3 36 10 0 0 4 26 2 0 0 +4 27 2 0 0 5 9 2 0 0 -5 19 10 0 0 -5 22 2 0 0 -5 24 2 0 0 -5 34 10 0 0 +5 20 10 0 0 +5 23 2 0 0 +5 25 2 0 0 5 35 10 0 0 +5 36 10 0 0 6 6 11 0 0 -6 20 11 0 0 -6 22 12 0 0 +6 21 11 0 0 +6 23 12 0 0 7 7 2 0 0 7 8 2 0 0 -7 38 2 0 0 7 39 2 0 0 -8 21 2 0 0 +7 40 2 0 0 +8 22 2 0 0 9 -1 -1 1 0 -10 18 13 0 0 +10 19 13 0 0 11 2 13 0 0 -12 23 2 0 0 -12 43 2 0 0 +12 24 2 0 0 12 44 2 0 0 +12 45 2 0 0 13 5 2 0 0 -13 31 2 0 0 13 32 2 0 0 13 33 2 0 0 +13 34 2 0 0 diff --git a/main/dict/main.dict b/main/dict/main.dict index f7d7e0b..79aa2c5 100644 --- a/main/dict/main.dict +++ b/main/dict/main.dict @@ -8,40 +8,41 @@ 7 [しゃっとだうん] sh a q t o d a u N 8 [りぶーと] r i b u: t o 9 [あいぴーあどれす] a i p i: a d o r e s u -10 [おはようございます] o h a y o u g o z a i m a s u -11 [おやすみなさい] o y a s u m i n a s a i -12 [おつかれさまです] o ts u k a r e s a m a d e s u -13 [すごいですね] s u g o i d e s u n e -14 [かわいいですね] k a w a i i d e s u n e -15 [じこしょうかいをしてください] j i k o sh o u k a i o sh i t e k u d a s a i -16 [じこしょうかいをおねがいします] j i k o sh o u k a i o o n e g a i sh i m a s u -17 [なまえをおしえてください] n a m a e o o sh i e t e k u d a s a i -18 [の] n o -19 [てんき] t e N k i -20 [なんにち] n a N n i ch i -21 [しつもん] sh i ts u m o N -22 [いみ] i m i -23 [どういう] d o u i u -24 [あどれす] a d o r e s u -25 [はい] h a i -26 [よろしく] y o r o sh i k u -27 [おねがいします] o n e g a i sh i m a s u -28 [おねがいいたします] o n e g a i i t a sh i m a s u -29 [いいえきょひします] i i e ky o h i sh i m a s u -30 [きょひします] ky o h i sh i m a s u -31 [いま] i m a -32 [きょう] ky o u -33 [あした] a sh i t a -34 [きおん] k i o N -35 [おんど] o N d o -36 [をおしえてください] o o sh i e t e k u d a s a i -37 [ですか] d e s u k a -38 [ぷろせすをしゅうりょう] p u r o s e s u o sh u u ry o u -39 [ぷろぐらむをしゅうりょう] p u r o g u r a m u o sh u u ry o u -40 [してください] sh i t e k u d a s a i -41 [していいですか] sh i t e i i d e s u k a -42 [します] sh i m a s u -43 [どのような] d o n o y o u n a -44 [どんな] d o N n a -45 [[s]] silB -46 [[/s]] silE +10 [ありがとうございます] a r i g a t o u g o z a i m a s u +11 [おはようございます] o h a y o u g o z a i m a s u +12 [おやすみなさい] o y a s u m i n a s a i +13 [おつかれさまです] o ts u k a r e s a m a d e s u +14 [すごいですね] s u g o i d e s u n e +15 [かわいいですね] k a w a i i d e s u n e +16 [じこしょうかいをしてください] j i k o sh o u k a i o sh i t e k u d a s a i +17 [じこしょうかいをおねがいします] j i k o sh o u k a i o o n e g a i sh i m a s u +18 [なまえをおしえてください] n a m a e o o sh i e t e k u d a s a i +19 [の] n o +20 [てんき] t e N k i +21 [なんにち] n a N n i ch i +22 [しつもん] sh i ts u m o N +23 [いみ] i m i +24 [どういう] d o u i u +25 [あどれす] a d o r e s u +26 [はい] h a i +27 [よろしく] y o r o sh i k u +28 [おねがいします] o n e g a i sh i m a s u +29 [おねがいいたします] o n e g a i i t a sh i m a s u +30 [いいえきょひします] i i e ky o h i sh i m a s u +31 [きょひします] ky o h i sh i m a s u +32 [いま] i m a +33 [きょう] ky o u +34 [あした] a sh i t a +35 [きおん] k i o N +36 [おんど] o N d o +37 [をおしえてください] o o sh i e t e k u d a s a i +38 [ですか] d e s u k a +39 [ぷろせすをしゅうりょう] p u r o s e s u o sh u u ry o u +40 [ぷろぐらむをしゅうりょう] p u r o g u r a m u o sh u u ry o u +41 [してください] sh i t e k u d a s a i +42 [していいですか] sh i t e i i d e s u k a +43 [します] sh i m a s u +44 [どのような] d o n o y o u n a +45 [どんな] d o N n a +46 [[s]] silB +47 [[/s]] silE diff --git a/main/dict/main.grammar b/main/dict/main.grammar index 1a07233..46afc62 100644 --- a/main/dict/main.grammar +++ b/main/dict/main.grammar @@ -1,5 +1,6 @@ S: NS_B KONNICHIWA NS_E S: NS_B KONBANWA NS_E +S: NS_B ARIGATOUGOZAIMASU NS_E S: NS_B OHAYOUGOZAIMASU NS_E S: NS_B OYASUMINASAI NS_E S: NS_B OTSUKARESAMADESU NS_E diff --git a/main/dict/main.kisoku b/main/dict/main.kisoku index ccd2156..04ab362 100644 --- a/main/dict/main.kisoku +++ b/main/dict/main.kisoku @@ -2,6 +2,7 @@ $文 → こんにちは $文 → こんばんは +$文 → ありがとうございます $文 → おはようございます $文 → おやすみなさい $文 → おつかれさまです diff --git a/main/dict/main.term b/main/dict/main.term index 189a401..6314d17 100644 --- a/main/dict/main.term +++ b/main/dict/main.term @@ -8,40 +8,41 @@ 7 SHAQTODAUN 8 RIBU 9 AIPI -10 OHAYOUGOZAIMASU -11 OYASUMINASAI -12 OTSUKARESAMADESU -13 SUGOIDESUNE -14 KAWAIIDESUNE -15 JIKOSHOUKAIOSHITEKUDASAI -16 JIKOSHOUKAIOONEGAISHIMASU -17 NAMAEOOSHIETEKUDASAI -18 NO -19 TENKI -20 NANNICHI -21 SHITSUMON -22 IMI -23 DOUIU -24 ADORESU -25 HAI -26 YOROSHIKU -27 ONEGAISHIMASU -28 ONEGAIITASHIMASU -29 IIEKYOHISHIMASU -30 KYOHISHIMASU -31 IMA -32 KYOU -33 ASHITA -34 KION -35 ONDO -36 OOSHIETEKUDASAI -37 DESUKA -38 PUROSESUOSHUURYOU -39 PUROGURAMUOSHUURYOU -40 SHITEKUDASAI -41 SHITEIIDESUKA -42 SHIMASU -43 DONOYOUNA -44 DONNA -45 NS_B -46 NS_E +10 ARIGATOUGOZAIMASU +11 OHAYOUGOZAIMASU +12 OYASUMINASAI +13 OTSUKARESAMADESU +14 SUGOIDESUNE +15 KAWAIIDESUNE +16 JIKOSHOUKAIOSHITEKUDASAI +17 JIKOSHOUKAIOONEGAISHIMASU +18 NAMAEOOSHIETEKUDASAI +19 NO +20 TENKI +21 NANNICHI +22 SHITSUMON +23 IMI +24 DOUIU +25 ADORESU +26 HAI +27 YOROSHIKU +28 ONEGAISHIMASU +29 ONEGAIITASHIMASU +30 IIEKYOHISHIMASU +31 KYOHISHIMASU +32 IMA +33 KYOU +34 ASHITA +35 KION +36 ONDO +37 OOSHIETEKUDASAI +38 DESUKA +39 PUROSESUOSHUURYOU +40 PUROGURAMUOSHUURYOU +41 SHITEKUDASAI +42 SHITEIIDESUKA +43 SHIMASU +44 DONOYOUNA +45 DONNA +46 NS_B +47 NS_E diff --git a/main/dict/main.voca b/main/dict/main.voca index 1607eb3..9c47a9e 100644 --- a/main/dict/main.voca +++ b/main/dict/main.voca @@ -18,6 +18,8 @@ りぶーと r i b u: t o % AIPI:ADORESU あいぴーあどれす a i p i: a d o r e s u +% ARIGATOUGOZAIMASU +ありがとうございます a r i g a t o u g o z a i m a s u % OHAYOUGOZAIMASU おはようございます o h a y o u g o z a i m a s u % OYASUMINASAI diff --git a/main/environment.sh b/main/environment.sh index 4bff1b2..034925e 100644 --- a/main/environment.sh +++ b/main/environment.sh @@ -5,9 +5,12 @@ DEV_ID_PLAY="0" DEV_ID_REC="1" # ボリューム -VOL_SPEAKER="85%" +VOL_SPEAKER="100%" VOL_MIC="100%" +# 起動後にネットワークの接続が完了するまで待つ処理 +WAIT_TIME_SEC=10 + # open_jtalk用 # atr503_m001 # TALK_HTS="/usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice"