CTIシステム開発との格闘の日々

ここに明かされる終電帰りの2週間
音声ボード、CTIミドルウェアの情報収集から検証、構築までの奮闘記

>> ホーム | 製品とサービス | ダウンロード | 最新情報 | 会社案内 | アドレス 最新更新日:
BACK | NEXT



■ 苦痛の2週間

下の作業を繰り返したんですよ。ぐるぐると。何回繰り返したんだろう。途中で記録をとるのを止めました。

  1. Redhat Linuxの再インストール
  2. Linuxのカーネルパッチ
  3. Dialogic SDK 再インストール
  4. Dialogicボードを差込むPCIバスの位置を替える
  5. USインテルサイトのFAQ等を検索
  6. 日本でLinux + Dialogicボードの実績があるかどうかの情報検索
  7. 知合いの技術者に片っ端からメール
  8. Googleでの検索数知れず

特に1〜4まで、毎日繰り返しました。特に4のPCIバスの位置の変更は何度も試しました。

知り合いにメールしてもLinuxの情報は持っていません。Windowsなら認識できたよ、ばかりです。そうこうしながらも、時間は過ぎていくばかりです。

USインテルを見ても多くの人が困っているようで、それ以上の情報はありません。USのYahooでキーワードを変えながら検索しても、解決するだけの情報にたどりつきません。みんな、困っているところで話しが止まっていて、先に進んでいないようです。更に、Linuxでチャレンジした内容の話しが無いんですよ。Windowsばかり。欲しいのは、Windowsの情報では無いんだよなー。

更にネットで検索を続けます。

そんな中、ある会社がLinux+Dialogicの組み合わせで製品を販売しています。駄目元でサポートしてくれないかとメールをなげました。

===================メールの始まり===================

いつもお世話になります。

■ メールの趣旨

ダイアロジックボード+Linuxに対するサポートを受けて頂けるかの問い合わせメールです。

■ 弊社が行いたい事項

弊社でダイアロジックボードを使用した音声認識のデモ開発を行っています。弊社の要件はLinuxでの実現です。ダイアロジックのマニュアルには、Linux対応と詠っているのですが、実際は認識されず開発に遅延が発生している状況です。(WINDOW上では動作確認済、ダイアロジックのパッチ,Linuxのバージョンは調べてみました)そこで、御社のダイアロジック+Linuxの実績をもとに弊社をサポートして頂けないでしょうか。

■ サポート要件

LINUX上でダイアロジックをインストールする手順を教えて頂きたい。

■ 返答内容依頼

  1. サポート可否の返答
  2. サポートしていただける場合の情報提供料金の提示。

以上宜しくお願いします。

===================メールの終わり===================

返信はありません。やはりこれがノウハウなのか、察するにこの会社も苦労したのでしょう。八方塞がりの状態です。

この日を最後にLinux環境に見切りをつけ、Windows環境へ逆戻りしようかという最終日です。

認識できたんですよ、やっとできました。いやー、長かったです。もちろんサンプルアプリケーションも動きました。 Windows環境と同じように動作します。

「ピッポッパッ」 「トゥルルルー」 「ガチャ」 「@*?#$%」

英語のアナウンスが流れて意味は分からないが、とにかく電話を受けてアナウンスを流せることは確認できた。今度は別のサンプルプログラムを動かして、電話をかけてみる。会社の電話番号をダイヤルすると、すんなり電話がかかる。

いやー、うれしいー。 そして、ほっとしましたよ、なにせ2週間苦しめられたのですから。もちろんその日は、家に帰ってビールで乾杯です。

あー、うれしいー。

■ しきりなおし

Linuxでのダイアロジックボードの認識が成功し、残るは擬似Linux環境で開発したプログラムがLinux環境で動くか、その検証が待っています。

擬似とはいえど、Linux環境で開発を行っていたのですんなり動作しました。

Bayonneとの出会い

Linux環境で順調にアプリケーションを開発していましたが、またまた疑問がでてきました。

「ダイアロジックボードは4回線接続できる。ということは4回線同時に着信する場合もある。Perlで本当に大丈夫なのか?今はD/4PCIボードを使っているが、ダイアロジックの他のボードでは大丈夫なのか?」

今の作りは、アプリケーションを起動するときに、D/4PCIボードの4つある回線の1つを割り当てるため、引数として指定し起動しています。ということは、4回線に対応するためには、プロセスは4つ起動する必要があります。理屈上は4回線同時着信でも動作すると思いましたが、実際に動作するかは別ものです。

ここで、「待てよ、地獄の2週間の間に見つけた情報で、GNUプロジェクトのテレコムソフトがあったな。あれは確かダイアロジックに対応していたはず。どんなものか調べる価値はあるだろう」ここからBayonneの調査が始まったのです。

■ Bayonneをインストール

早速GNUプロジェクトのページからBayonneをダウンロードする。

Bayonne以外にも、

  • GNU Common C++
  • GNU ccScript
  • GNU ccAudio

が必要なので、あわせてダウンロードします。

インストールは順調に進み、付属のサンプルで動作確認を行う。

「ピッポッパッ」 「トゥルルルー」 「ガチャ」 「press 1 to play or 2 to record」

なになに、1で再生、2で録音とある。ためしに2を押してみる。「enter the 3 digit prompt you wish to record」3桁の番号を押せとある、111と押してみる。その後電話で喋ってみる「あーあーあー、テスト、テスト」最後にシェープを押してみた。「press 1 to play or 2 to record」最初のアナウンスだ、1を押してみる。「enter the three digit prompt you wish to play」さっき入力した111を押してみる。「あーあーあー、テスト、テスト」

おぉー、動いた。音声の再生や録音ができて、しかも押したダイヤルが取れる。しかも、かかってきた電話が切れたことを認識することができる。

実は、この間までのPerlアプリケーションでは、かかってきた電話が切れたことを認識できなかったんだよね。いやー、すばらしい。あとはスクリプトからデータベースに接続することと、機械に喋らすことができれば必要十分だ。

つい最近まで開発していたPerlからCライブラリをコールする方式と 同じことが実現でき、かつ米国での実績は300社を超えている。しかも Sun Microsystemsも導入した実績があるようだ。それなら、4回線同時に着信しても問題なく動作するだろう。これを採用しない手はありません。PerlからCライブラリを制御する方式は中止です。

■ 機械に喋らせてみる

Bayonneは米国のカーネギーメロン大学で研究されているFESTIVALというソフトに対応している。FESTIVALは、TTSというカテゴリのソフトで、喋らせたい文字をテキストで渡すと機械の声で音声ファイルを作ってくれるソフトである。そのTTSが作成した音声ファイルを再生することが、機械に喋らせるということです。

早速ダウンロードしてインストールしてみる。sayコマンド引数に喋らせたい文字を書くと、なんとしゃべったのである。

say "Wellcome to our demo site"

いやー、結構感動しました。

これができるということは、例えばデータベースに登録された商品マスタを検索し価格を読み上げたり、在庫マスタを検索して残り在庫数を読み上げたりと、使い道がかなり広がりますよ。

聞き易さという点では、人間が話す声を録音したものより劣りますが、そのかわり毎回変わるものの読み上げができるようになりました。

いやー、こうスムーズに動作確認が進むと楽しいもんです。

しかし、1点どうも気になるところがあります。そうです。イントネーションが英語なのです。無理もありません。英語の読み上げを目的としたソフトウェアです。しかも、「ようこそ」と読み上げるには、say "you ko so"と書くしかありません。

さすがに、このままでは使いずらいので、代替を探します。ネットで検索すると、格安のTTSを発見しました。もちろん、Linuxで動作します。

早速購入し評価します。

「ようこそ」と文字列を渡します。できあがった音声ファイルを再生すると、日本語のイントネーションで「ようこそ」と聞こえます。

できました。格段に聞きやすくなりました。早速、スクリプトからコールできることを確認するため、テストスクリプトを作成します。

■ 日本語が使えない

テストスクリプトを作成し、いざ読み上げを行うと、駄目なんです。日本語が渡せないのです。ばけてしまうんです。「ようこそ」と渡しても、TTS側は「#$%&」と訳の分からない文字に変わっているんです。

「またかよ。やはり日本語化がされていないソフトウェアを使うのは無謀なのだろうか。ソフトウェアの機能や実績はとても良く、ポテンシャルは十分にあるのに、ここで断念するのはもったいないなー」

ここであきらめる訳にはいかないのです。

ここでオープンソースの良さがでました。ソースコードがあるので、それを解析できれば、この問題が解消されるかもしれません。

早速ソースコードとにらめっこをし、デバッグを開始します。

1日目: あたりをつけることすらできません。
2日目: なんとなく気になる個所を発見。
3日目: ようやく見つけました。日本語化成功です。

これで「ようこそ」を渡して、TTSが「ようこそ」と読み上げる音声ファイルが作成されます。

■ データベースにつないで見る

Bayonneは標準でpostgreSQLに対応しています。

早速postgreSQLをインストールします。ネットからRPM形式のパッケージをダウンロードし、インストール。データベースを作成し、psqlから接続ができることを確認します。postgreSQLの情報は、インターネットを検索するとかなりの情報がとれます。かなり注目されてきているので、日経コンピュータにも、企業システムへの導入事例が毎月載っている程です。

psqlからの接続が問題なく行え、確認用のテーブルとデータを作成します。

後は、Bayonneから接続できればOKです。BayonneからpostgreSQLにつなぐための設定をし早速動作確認。残念ながらマニュアルが読みにくく、サンプルも無いためSQLが発行できません。仕方がありません。ネットで探すか、マニュアルを丁寧に読むしかありません。

探しつづけて、ようやくネットで見つけました。ネットの情報をもとに、早速SELECTを発行。もちろん結果が返ってきます。成功、成功。日本語のテーブル名やカラム名はもちろん使えます。

■ Perlスクリプトを呼び出す

Bayonneは標準でPerlインターフェースも対応しています。WEBシステムのCGIでは標準といってもいい程普及しており、導入実績も十分にあります。わたしも過去に経験したシステムで使ってきました。また、書籍やインターネット、知り合い等、情報が多いのも魅力です。

BayonneからPerlスクリプトが実行できるよう設定をします。

早速動作確認。テストのPerlスクリプトを用意してBayonneから呼び出します。Perlスクリプトとに引数を渡し、Perlスクリプトの中でファイルを読み込みます。そのファイルに保存された番号に1を足してファイルに保存書き込み、その番号をBayonneに返します。ホームページによくある、カウンターを作ってみました。見事に+1された数が返ってきます。

更に、返ってきた数をTTSに渡して読み上げができるか確認します。これも成功です。もちろん日本語で読み上げます。コールフローの制御はBayonneのスクリプト、ファイル操作やレポート処理等をPerlスクリプトとして外部で処理させることができ、これで分業が実現します。ソフトウェアも得意分野のみに活用し、それらにいくつか分業させれば開発やテストも楽になります。

在庫問い合わせデモを作る

一通りの検証が済んだので在庫問い合わせを作ってみます。

データベースにデモ用の商品マスタとユーザマスタ、それとテストデータを作成します。

処理の流れは

  1. Wellcomeアナウンス
  2. ユーザIDの入力をしてもらうアナウンス
  3. 押されたキーを認識する
  4. ユーザマスタの存在チェック
  5. 在庫確認を行う商品コードの入力アナウンス
  6. 押されたキーを認識する
  7. 商品マスタを検索し、在庫数を取得
  8. 在庫数をTTSに渡して読み上げる
  9. 在庫検索を続けるかのアナウンス
  10. 押されたキーを認識
  11. 続けるは5へ、終了なら処理を終了し電話を切る

スクリプトのマニュアルやサンプルを参考に開発を進めます。

上記コマンドも、コマンド毎に分解すると

  1. 受話器をあげる
  2. 音声ファイルの再生
  3. 利用者が押した番号を認識する(DTMFの取得)
  4. 番号に割り当てた処理を実行する(1なら「ようこそ」とアナウンスする処理を実行する等)
  5. 音声合成を使って読み上げる(1が押されました)

コマンド毎の動作確認は、Bayonneの検証で確認済みなので、あとはそれらを呼び出すスクリプトを作成すればいいだけです。

Bayonneのポテンシャルの高さは間違いないのですが、完璧なソフトではありません。どんな言語でもそうですが、それを使いこなす上でのノウハウは必要になるようにBayonneのスクリプトもそうでした。コマンド毎の処理は問題ないが、1つの処理を作るためにはスクリプトのステップ数が増え関数等を作っていくと、若干の問題はありました。

Bayonneでアプリケーションを作る上でのノウハウはここで築き上げました。

また、画面や帳票と違って電話でのやりとりは目に見えないので、何度も聞いて使いやすさの検証を行っていくのが大事です。

と、ここまでが、私がCTI開発で経験したことです。Bayonneに出会わなければ、今でもPerlとCライブラリで開発をしていることでしょう。

この続きは現在も進行中です。続編でご紹介できるよう頑張りますので、楽しみにお待ちください。
BACK | NEXT | TOP



Home | CTI | Download | What's New | Profile | Address
株式会社オープンコム
〒102-0072 東京都千代田区飯田橋4-8-13 山商ビル9階
TEL: 03-3263-7885 FAX: 03-3263-7889
お問合せは webinfo@opencom.co.jp まで。
最新更新日:
(c) Copyright 2003 OC, Inc. All right reserved
!! 特集 !!
Open CTServer
CTI開発奮闘記Part2
Dialogic vs Voicetronix
CTIで何ができる?
Bayonneとはなんですか?
ダイアロジック緊急連絡
CTI開発ノウハウ一挙公開
音声ボード早分かり
CTI開発奮闘記
資料請求はこちら
お問合せはこちら

製品情報
アウトバウンドシステム
Open PBXプラス
音声ボード
CTI 製品
オートコール

インフォメーション
音声ファイルフォーマット
Bayonneサンプル
ダウンロード
特約店プログラム
会社案内

Linuxの新しい活用方法を発見
「Linuxの新しい活用方法を発見」

このレポートの内容は以下になります。このレポートを無料で差し上げます。資料請求はこちら

■ はじめに
■ なぜLinux+Bayonneか
■ 弊社が提供するCTI構築
   サービス
■ コスト削減が実現できるか
■ どういった使い方ができる
   のか
■ 苦労しました
■ 弊社が提供するもの
■ 課題
■ お問い合わせ

HOMEへ