従来、インターネットを介した複数関係者間のグループ通話は、操作が煩雑であったりしたため、高齢者の気軽な井戸端会議や家族間の日常的な連絡、頻度の高い会社業務連絡、等にはあまり用いられなかった。また、会話の内容を後で確認する操作・手続も、テキストチャットに比べて煩雑であり、ほとんど活用されてこなかった。また、特許文献1-2はそれらをある程度解決しようとしたものだったが、同一チャンネル(テーマを共有する会話仲間、グループ)に属する複数人が同時に発話した際にリアルタイム配信品質を保証することが困難であり、また、複数の介護施設のルーターをまたぐ広域のインターネット通話プロトコル(独自ポート番号によるTCP/IP通信等)を開通させることも現実的に困難であった。
図1は、本発明の例としての一実施形態におけるクライアント(端末)側のコンピュータプログラムの動作を示す説明図である。
図(
図2も同じ)において、「□」は処理を、「〇」はループ(繰り返し、タイマー割込みによるものを含む)、「◇」は分岐または分岐を含む処理を示す。
このような制御や処理を行える通信端末の仕組み、OS、プログラミング環境自体は周知であるため詳述しないが、当業者であれば、
図1を参考にすれば、明らかに本発明によるクライアント端末を容易に実装することが可能である。
===以下、
図1と同文===
■クライアント(NanoPi、ラズパイ又は安価なWindows端末などの端末)
□クライアント(端末)電源ON
□音声入力装置(マイクデバイス)と入力バッファを初期化し、音声入力をバッファリングし始める(音声入力スレッドを開始、1000~3000ms期間中の最大デシベルを大域変数に格納)
□音声出力装置(スピーカデバイス)と出力バッファを初期化し、再生可能にする(音声出力(再生)スレッドを初期化)
□利用者ID、及び、<端末内チャンネル番号,チャンネルURI,利用者毎チャンネルURIパスワード>の対応表(端末の設定管理者がCSVで設定)を所定ファイルからロードする
□前回使用していた端末内チャンネル番号および音量データ(再生用、録音用)をファイルからロードする
□チャンネル番号の変更フラグをたてる
〇メインループ(1000~3000msに1回タイマー割込処理する)
| □メインループへの再入禁止フラグが立っている(TRUEの)場合、ここでBREAKする(何もしない)
| ◇チャンネル番号の変更フラグが立っている場合
| | □利用者音声ファイルを初期化する(空にする)
| | □再生中のファイルがないことにする(再生フラグ←FALSE)
| | □メインループの再入禁止フラグを初期化する(再入禁止フラグ←FALSE)
| | □チャンネルの変更フラグをおろす
| ◇入力バッファに所定デシベル以上の利用者音声があり、かつ、区切りを意味する所定予約語がない場合(前回からの1000~3000msの間に)
| | □利用者音声を録音する(=現在の利用者音声ファイルに1000~3000ms分を追加する)
| | □メインループをBREAKする(ただし、音声出力(再生)スレッドには影響を与えない)
| ◇入力バッファに所定デシベル以上の利用者音声がない場合(前回からの1000~3000msの間に)又は所定予約語により発言を区切った場合
| ◇未送信の利用者音声ファイル内容がある場合(すなわち、利用者が発言を終えた(=所定デシベル未満の連続的な期間や所定予約語により発言を区切った)直後の場合)
| | ※再生中のファイルがある場合も、ない場合も、音声出力(再生)スレッドには影響を与えない
| | □メインループへの再入禁止フラグをたてる(TRUEにする)
| | □未送信の利用者音声ファイルをPOSTする(利用者ID,チャンネルURI、利用者の該チャンネルURIのパスワード、音声ファイルをエンコードしたものの4つをパラメータにする)
| | □メインループへの再入禁止フラグをおろす(FALSEにする)
| | □利用者音声ファイルを初期化する(空にする)
| ◇未送信の利用者音声ファイル内容がない場合
| ◇再生中のファイルがある場合
| | □メインループをBREAKする。すなわち、そのまま再生しつづける(なにもせず、マルチスレッド処理で音声出力(再生)スレッドは生きたまま)
| ◇再生中のファイルがない場合
| □サーバーから何を再生すべきかGETする(利用者ID,チャンネルURI、利用者の該チャンネルURIのパスワード、そのチャンネルで最後に再生した記事番号をパラメータにする)
| ◇再生すべきファイル(音声単位)がすでにダウンロード(キャッシュ)されている場合
| | □ダウンロード(キャッシュ)されているそのファイル(音声単位)の再生を開始する
| ◇再生すべきファイル(音声単位)がいまだダウンロード(キャッシュ)されていない場合
| □サーバーから新たにそのファイル(音声単位)をGETしキャッシュ(領域が足らない場合、最も古いものを削除してキャッシュ)して、そのファイルの再生を開始する
□現在のチャンネル番号および音量データ(再生用、録音用)をファイルにセーブする
□クライアント(端末)電源OFF
===以上、
図1と同文===
図2は、本発明の例としての一実施形態におけるサーバー側のコンピュータプログラムの動作を示す説明図である。
サーバーソフトウエアについても、当業者は、
図2を参考にすれば、容易に実装可能である。
===以下、
図2と同文===
■サーバー
〇メインループ
□要求(HTTPSのGET又はPOST)の利用者ID/パスワードにより、チャンネル(URI)として許容していない利用者(クライアント、端末)からの要求(GETやPOST)をはじく
| ※チャンネルの利用者ID/パスワードの管理はディレクトリで階層化したプレインテキスト(パスワードはハッシュで照合する)とする
◇GETで次に再生すべきファイル(音声単位)を要求された場合
| ◇そのチャンネルのファイル数の更新がない場合、GETのパラメータに含まれるチャンネルURIとチャンネル内記事番号から、一つ前のファイル番号を計算して通信して返す
| ◇そのチャンネルのファイル数の更新がある場合、又は、チャンネル内記事番号が1の場合、そのチャンネルの最大ファイル番号(最新を聞いてもらう為)を通信して返す
◇GETで再生ファイル(音声単位)そのものを要求された場合
| □再生ファイル(音声単位)を通信して返す
◇POSTで保存して配信すべきファイル(音声単位)を受領した場合
□保存し、そのチャンネル(サーバーURI)のファイル数(=最大ファイル番号)を記憶するファイルを更新する
===以上、
図2と同文===
他の実施の形態においては、以下のようなバリエーションもありうる。
端末の音声入力装置から入力される音量の少なさではなく、内容の特殊性を区切り基準として
自動的に区切った音声単位に対応する音声データを、
該入力された順にサーバーに送信し記憶されるようにすることもできる。
通信はHTTPS(インターネット)のほかに、やHTTP(イントラネット)でも行いうる。
サーバーに記憶された音声単位は新しい音声単位から順に通信を利用して端末で再生する。古い音声単位をさかのぼっている最中に、新しい音声単位が記憶されたときは、その音声単位が選ばれるモードと、いったん古い音声単位の記事番号が1となるまでさかのぼるモードを用意することもできる。
複数の端末で前記サーバーのURIを共有できるようにし、
URIに関連づけて記憶する音声単位の再生順番を開始時刻だけでなく終了時刻等により決定する。
端末は異なるチャンネルを構成する複数サーバーURIにアクセス可能になっており、
利用者音声による音声認識又はジョグダイアルにより切り替え可能なように構成している。
切り替えは、端末の音声入力装置から入力される内容により利用者が指示できる。
端末の電源もしくは音声入力装置のON/OFF、入出力音量の大小、等についても利用者が音声で指示可能である。
サーバーに記憶され端末に通信された音声単位は端末でキャッシュされ複数回の再生に対応する。
端末において、音声単位の再生を開始すると決定したとき、又は、音声単位の再生が終了したとき、
次に再生すべき音声単位を該当するサーバーURIに該端末が問い合わせをする(これらはGETでなくPOSTでも構わない)。
サーバーに記憶する音声単位として、端末における利用者の発言以外に、各URI等に関連づけた該当利用者層が暗記したい内容やリフレッシュのために聞きたい音楽やニュース記事等の系列を記憶する。
サーバーに記憶する音声単位として、端末における利用者の発言に加えて又は代えて、各自動応答システムによる応答を記憶するようにする。