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

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

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



■ おまたせしました

私がCTIに取り組んでからのさまざまなことをCTI奮闘記としてみなさんに公開しました。多くの方に読んでいただき、そして反応を頂きました。

正直驚いています。

中でも、「その後どうなったんだ!!」と多くの方から問い合わせ?を頂きました。これは皆様のリクエストに答えてCTI奮闘記Part2を書かなければと思いつつ、ついつい、こんなに時間がたってしまいました。

「これではいかん」と一念発起し書き始めたものの、なかなか筆(キーボード?)が進みませんでしたが、ここにやっとPart2を書き終えることができました。

これからしばらくお時間を頂きまして、私の苦労話を読んでみてください。

                                              株式会社オープンコム 与那嶺 弘
-----------------------------------------------------------------------------------------------------------

■ 機械に向かって喋ってみる(音声認識デモ作成の話)

Part1では、bayonneを使って在庫問い合わせのデモを作成したところまででした。そしてその後、やはり来たんですよ。はい、そうです。

「音声認識のデモはないのか?CTIで使えないと意味ないぞ!! せっかくだから、デモ作っとけよ!!」

いつかはくるんじゃないかと思っていたが、やはり来たか。

まぁ、仕方がない。作るとするか。

旭化成のVOREROを評価したので、今回のデモ作成はすんなり進みそうです。

早速VOREROをインストール。

在庫問い合わせデモからスクリプトを流用し、さっそく開発開始!!肝心のデモの内容ですが、VOREROに付属する評価用のアプリケーションがあり、その中に料理メニューが表示されそれをマイクに向かって喋ると音声認識し、結果を返すものです。

このアイディアを頂きます。まずは料理メニューを認識するためにVOREROのツールを使って辞書を作成します。

そして、ここが最大の見せ場です。前回はWindows上でサンプルを改造してみた程度だったのですが、今回はCTIです。電話回線を通してサーバ側にインストールしたVOREROで音声認識を行うのです。

Bayonneを起動し、早速デモダイヤルに電話をかけます。

料理の注文なので1を押します。

「ちらしずし」.....「ご注文の料理は、ちらしずし、です」

おぉ、認識している、続いて

「おちゃづけ」.....「ご注文の料理は、おちゃづけ、です」

以外とやるねー

「ハンバーグ」.....「ご注文の料理は、ワンバーグ、です」

しまった。「ハ」が「ワ」で聞こえてしまう。

まぁ、いいか。

それにしても、自分の声を機械が認識するなんて、不思議な体験です。

私の車にはカーナビがついていないのですが、VOREROはいくつかのカーナビに組み込まれているようです。皆さんの車のカーナビにもVOREROが入っているかもしれませんね。

そうそう、このデモ、公開しているんです。

044−411−1782に電話してみてください。そして、あなたの声が認識されるか、試してみてください。

音声認識は、まだ完璧な技術ではないですが、かなりいいところまで来ていると思います。

■ 要件盛り沢山の案件

CTIの大きな案件が受注できました。私の故郷、沖縄の企業のコールセンターシステムです。

しかし、この案件には大きな壁があります。初めて扱う、アナログ12回線&INS64ボード。

まいったなー。アナログはともかく、INS64ボードは動くのだろうか。

といっても、Dialogicに関しては4回線ボードを動作させることができたので、その他のボードも楽勝でいけるはずです。

まずはアナログ12回線ボードから。認識は割りと楽にいけました。Part1での苦労が報われました。

と、安心するのは早かった。

ナンバーディスプレイに対応していない。発信者番号がとれない。

はぁ〜.....何かの間違いであってくれ。もう1度ダイヤル。

やはり駄目か。

英語マニュアルとにらめっこ&WEBで検索。相変わらずWEBに情報はないです。

それからしばらく思考錯誤を続けた結果、遂に成功しました。

へぇー、こんな設定するの。半信半疑で設定を変更し、いざテスト。

あ・れ。発信者番号とれてる。。。。。やったー!!##

まずは第1ハードルクリアです。

次は外線発信です。

スクリプトを作成し、GO。...あれ、電話がこないんですけど。

まてよ、着信側の電話線が外れているんじゃないか?まずは普通の電話機に挿して外線発信で確認。

といっても、着信側の電話機は自分の机の上にあり、なおかつ、このテストの直前に外線に発信して通話できたので、使えないはずはない。

えっ。今度は発信かよ。

とほほ.....

うーん。なぜだ。

またまた、はまってしまいました。

なんとか片付けないと、しゃれになりません。期限はせまるし、動かないしで.....

それから5日後。悪戦苦闘の末、なんとか発信ができるようになりました。

どうやら、海外と日本とでは、扱いが違うようです。

やれやれ。

着信、発信ともにOKになったので、今度は回線どうしをつないでみます。

2本の外線を使って、ボードから外線発信をし通話可能となった状態でもう1本の回線を使って別の番号に発信します。もう1本の回線も通話可能となった状態で、2本の回線をボード上で接続し通話可能な状態にします。

成功です。

と、言いたいところでしたが、なんだよ、相手が電話を切ったのにサーバ側は認識していないじゃないか。

駄目だよ。認識してくれなきゃ。なにか設定が悪いのか?

それからしばらくして、TAの問題であることが発覚。相手が切断をしたときに切断信号をだしてくれないのです。某社のTAを購入したのだが、WEBには切断信号がでないとの説明なし。

未使用品なので、上位機種と交換してくれるよう問い合わせをしたが、無理の一点張り。

「そんなもの、売るなよ〜〜〜。全く使えないもの売りやがって」

しかも、上位機種なら切断信号をだすらしい。どうやって情報を入手すればいいんですか!!

教訓:たかがTA。されどTA。慎重に選択すべし。

仕方がないので、別のTAを調達して解決しました。やれやれ。

続いて、今回の重要な事項の1つに、回線どうしを結合し、通話可能な状態にすることがあります。要するに、コンピュータが電話をかけ、それを受けたお客様が、オペレータとの会話を希望する場合に、アナログボードの空いているポートを使ってオペレータに電話をかけつながった状態で、お客様とオペレータの回線をボード上で接続し会話可能な状態にするPBX的な機能の検証です。

うちの社長、「けち」なのでDialogicのラインナップの中でも一番安いD/4 PCIしか買っていないのです。そうです。安いのには理由があります。その1つが、この回線を結合する機能がないのです。

なので、今までその機能の検証ができなかったのです。

しかし、今回の案件で使う12回線ボードには、その機能が搭載されています。

あとはbayonneが対応しているかの確認です。

まず、外線を使って発信します。つながった状態で、お客様にアンケートをとるために質問をします。その中で、オペレータへの接続を希望する場合、音声ボードの空いているポートからオペレータに電話をかけます。オペレータが受話器をあげると、2つの回線をJOINコマンドで接続します。

と、単純に接続することは、楽にできました。

やったね。

ところが、通信処理なので、タイムアウトやエラー等の処理は、正常系の処理の3倍程時間をかけてコーディングしなくてはいけません。

うーん。単純機能だとすっきりとしたソースコードなのですが、タイムアウト等を盛り込むと、けっこうなコード量になりました。

まぁ、仕方ないかな。

アナログボードで実現すべき機能の検証が完了したところで、今度はINS64ボードです。

まずはINS64ボードを認識させることからスタートです。

またまた壁にぶちあたりました。インストールガイドを参考に設定したのに起動でエラーになってしまう??????

最近、感覚が麻痺?してきたのか、免疫がついてきたのか、それ程驚きはありません。

いつものように悪戦苦闘の末、なんとか認識に成功しました。INS64もインストールガイドの内容で設定したのに、エラーなんです。

はぁ〜。

またまた、設定の変更&認識確認を繰り返した末、やっと認識に成功しました。

それにしても、今回のボードの認識は、なぜかすっきりしません。エラーなのに認識している?

そして開発に入ります。これがまた、サンプルコードがないんですよ。正確に言うと、INS1500(PRI)のサンプルコードはあるのですがINS64(BRI)は、ほとんど乗ってないんですよ。

どうやって開発すればいいの? まったく!!

SDK付属のユーティリティで状態をみると、Dチャネルのリンクは取れています。

仕方がないので、わずかにあるサンプルコードをつなぎ合わせコンパイル&GOの繰り返しです。

いや〜、それにしてもサンプルコードがないなんて、なんと親切?なんだろう

一時は納期に間に合わないかと思いました。もう駄目かなと

それが、今回も運命の女神は微笑んでくれました。動いたんですよ。

いや〜。今回の喜びは格別でした。一時はお手上げ状態だったのですから。

と、喜びも束の間。どうも16回線(アナログ換算)同時に実行すると、初回は正常ですが2回目以降はエラーになります。

なぜ?

ソースを何度もチェックしましたが、基本的にポートをオープンし処理実行後はクローズしているので、おかしくなる要素が見当たりません。

アプリ実行後、サーバをリブートするとうまくいく場合があるので、アプリ実行後はサーバをシャットダウンし、翌朝電源ONでしばらく様子を見ることにしました。

■ IP電話は使えるの?

うちの会社、ADSLでインターネットに接続しています。もちろん、IP電話もついています。

そうです。「IP電話も問題なく使えるんだよな。これからはIP電話が絶対使われてくる。コストを抑えることも大事だが、品質が悪くては駄目だ。そのためにも、しっかり評価しとけよ!!」

はい、はい。了解です。

早速つないで見ます。IP電話とはいえ、ボードからのアクセスは通常の回線と変わらずにいけるはずです。

と思ったのですが、駄目なんです。

相手がまだ電話にでていない、呼び出し音が鳴っている状態なのに、サーバは相手が受話器をあげ、通話可能になったものと認識しているのです。

フライングだよ!!

でも、サーバは回線から送られてくる信号を判断しているはず。なのでIP電話は通常の回線とは違う信号が送られてくるのかな?

調べてみると、どうやら通常の回線とは違うようです。相手が受話器をあげ通話可能な状態になると、極性反転が起こりサーバはその極性反転を検知して通話可能な状態を判断しているのですがどうやら、相手の呼び出し音がなった時点で極性反転が起こっているようです。

電話をかけるとまずIP電話のサーバに信号が行き、そこからNTTの交換機に行きますが、NTTの交換機に行った時点で極性反転が起こるのだと思います。現象からみると、そう思えます。

この問題は別の手を使って解決しました。

いやいや、似ているようで違う。う〜ん。いろいろありますなー

教訓:通話料だけで回線を選択するべからず。使えなければ無駄な出費です!!

■ やれやれ

最近、問い合わせだけでなく、注文もいただける様になりお蔭様で忙しくさせてもらってます。皆様、ありがとうございます。

ところで、ある案件を受託しお話しです。

開発も順調に終了、そしてお客様へ納品です。社長とツーショットで車に乗り、お客様のところへ向かいます。

CTIを始める前までは、客先での開発を行ったこともありますが、まぁ駅から10分程度の比較的移動が楽な環境がほとんどでした。

しかし、CTIを始めてからは、納品先がさまざまです。宅配便で送ったり、自分で車を運転して持っていったり。

今回の案件は設置作業&外部との接続試験を兼ねて、自分で配達&設置です。幹線道路からかなり奥に入った場所への納品なので、時間どおりに着けるか心配です。

あらかじめ地図を用意し向かいました。

高速に乗って、地図を頼りに向かいました。

見事に、道に迷いました。右に向かっているつもりが、実際は左に向かっていたり。

はぁー、カーナビほしぃー。ボレロが搭載されているもので

ボレロ:「目的地をどうぞ」
わたし:「○○○まで」

なんて言うと、さっとルート検索し案内してくれるような。

社長、買ってくれないかなー

なんとか時間どおりには着けましたが、3時間かかってしまいました。

■ あれから

INS64ボードの続きです。

アプリを実行すると初回は正常ですが、2回目以降はエラーになります。アプリ実行後、サーバをリブートすると正常に動くので、しばらくはアプリ実行後、サーバをシャットダウンし翌朝電源ONの運用で様子を見ることにしました。

申し遅れました。このアプリは日時で動くもので夜間実行し、日中は停止しています。なので、アプリ実行後サーバをシャットダウンしても問題ないのです。

ここまでが前回の話しでしたが、それからしばらく様子を見たのですがどうも挙動不審です。なんと、サーバを立ち上げただけでアプリは実行していないのに、TAの状態がおかしくなるのです。アナログポートから外線発信ができないのです。

おいおい。なにもしていないのに、なぜエラーになるの?

このまま様子を見ても仕方がないので、ボードを購入元に送り現象を伝えて問い合わせをしましが、うちでは正常に動作します!!の一点張り。検証時の環境について問い合わせても、一方通行。無視なのか、問い合わせが担当まで届いていないのか、何れにしても前に進みません。

仕方がないので、ありとあらゆる可能性を検討し実行してみました。

そ・し・た・ら・動いたんです。今までのように、サーバをリブートすることなく、SDKのサービスもリブートすることなく、アプリを何度実行しても、毎回問題なく動作します。

よかったー!!!!!!!!!!!!!。

そして長かったー!!!!!!!!!!。

ずっと気になっていたことが、やっと解決できました。

早速お客様に報告し、納品しました。

やれやれ。それにしても、INS64ボードには泣かされました。

悪戦苦闘中は、にくたらしく思えましたが、終わってみると結構愛着がでてきました。不思議なものです。

ところで、私が開発したアプリの内容ですが.....もし興味がありましたら、問い合わせをください。

へぇ〜、こんなことができるんだ!!と思えるはずです。

■ INS1500ボード動きました

アナログ、INS64と制覇?してきました。残るはINS1500です。

INS1500はINS64と違い光ファイバーを使います。そして、光ファイバー1本でアナログ換算で23本もの通信が同時に行えます。

IP電話が急速に普及しているのに、INS1500がこれからも使われるのか?疑問でした。

しかし、INS1500は下記のメリットがあります。

  1. 発信の速度がアナログと比べてかなり早いので、同じ時間でアナログより多くの発信をすることが可能です
  2. ナンバーディスプレイのやりとりがアナログより劇的に早いので相手を待たすことなく着信することが可能
  3. 多くの回線を必要とするとき、ビルの構造によっては物理的な配線のスペースがなく必然的に光ファーバー1本で済むINS1500になる
  4. アナログ23本と比べると基本料金が安い

そして、「INS1500に対応しているのか?」と多くのお問い合わせも頂きました。まだまだ、需要はあるようです。

INS64も動いたことだし、多分でINS1500も動くだろうとふんで、ボードを買ってもらい検証に入りました。

社長も今回はご機嫌なのか、すんなりとINS1500ボードを買ってくれました。後でなにも起こらなければ良いのがだが。

INS64で得たノウハウをフィードバックです。

ノーマルのままでは、やはり動きませんでした。発信時のパラメータを日本用に変更する必要があります。。

やっと、動きました。

アナログと比べて、発着信の動作が劇的に速いです。そして、音がクリアな気がします。

ナンバーディスプレイにも対応したし、これでお問い合わせを頂いても「bayonneはINS1500にも対応しています!!」とお答えできます。

■ 参考にしてください

今までの悪戦苦闘の内容をCTI奮闘記として皆様にご紹介していますが気づきました。

これを読んだとしても、読者の皆様の疑問や問題の解決にはならないんです。

そこで作りました。インストールガイドには載っていない、今まで苦労して構築したノウハウを手順書にまとめ、皆様にお伝えできる形にしました。

始めは、自分の備忘録的に作り始めたのですが、作っていくうちにこの手順書がCTIで問題を抱えている、多くのエンジニアの手元に届くと、同じ苦労をせずに、本題であるアプリケーションの開発に労力を集中することができます。

そうすることが、魅力あるアプリケーションが次々と開発されCTI業界が活気づくものと思います。

興味がありましたらお問い合わせください。

■ オートコール

パッケージソフトを開発しました。

オートコールです。

コンピュータが自動で電話をかけ、商品の案内や資料請求の受付、アンケート等用途は様々です。

今まで検証したことをつなぎあわせて、1つのパッケージソフトにします。

画面はブラウザベースにしました。その方が使うほうは楽ですから。

電話帳データをあらかじめデータベースに登録しておき、コールする地域を選択してグループを作り、コールを開始します。

アナウンスの内容は前もって録音しておき、質問に対してダイヤルで答えてもらえるよう、コールフローも作成します。

今回作ったオートコールは、録音した声を音声ファイルとして保存し再生する機能と、もう1つ機械にしゃべらせる機能も搭載しました。喋らせたい内容を登録しておき、合成した声でアナウンスを行います。

う〜ん。やはり人の声のほうが、あったかみがあるような気がします。やはり機械に喋らせるのは、アナウンスの内容を仮決めする時点までのつなぎとし、最終的に人が録音したものを、差し替えができるようにします。

それと、コンピュータが自動で電話するのですが、いつでも電話をかける訳にはいきません。そこで朝9:00〜21:00までの間を基本的な時間とし更に、曜日別に細かくスケジュールが組める機能も搭載することにしました。

コールフローの中でいくつかアンケート形式で質問できるようにし、答えていただいた結果はデータベースに保存します。

コール終了後、どんな回答を頂いたか分かるような、分析帳票の機能も搭載します。

このパッケージの詳しい内容は、ここでご紹介しています。

おかげ様で、問い合わせや注文をたくさん頂いています。ありがとうございます。

と、Part2はここまでです。

続きはPart3でご紹介しますので、もうしばらくお待ちください。

最後に、今年の夏は暑いですね。

うちの会社のクーラーが壊れて、しばらく室内がサウナ状態でした。その間に来社頂いた皆様、暑い中お越しいただいてありがとうございました。クーラーも無事直り、今では快適になりました。これで開発もはかどると思います???

それでは、みなさん、お体を大事にされてください。
BACK | 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へ