コンタクトセンターの通話を音声認識で文字化する仕組み SIP編
Bladean Mericle
はじめまして、Bladean Mericleと申します。
いつもは個人的に技術書を書いているのですが、ご縁があってAmiVoice Tech Blogで記事書かせていただくことになりました。
何を書くか色々を考えさせていただきましたが、今回はコンタクトセンターの音声認識についてお話していきたいと思います。
コンタクトセンターとは
コンタクトセンターという用語そのものに聞き覚えが無い方も多いと思います。
こちらはコールセンターやヘルプデスク、サポートセンターなどと読み替えていただければ理解しやすいかと思います。
要は電話やチャット、メールなど、様々な方法を用いてお客様との応対業務を行う場所、それがコンタクトセンターです。
電話以外の方法でもお客様とやりとりをするようになったので、コンタクトセンターという名称が使われるようになったようです。
AmiVoice® Communication Suite
そういえばAmiVoiceにはコンタクトセンター向け製品、AmiVoice® Communication Suiteがあることをご存知でしょうか?
こちらはコンタクトセンターの通話内容を音声認識し、その結果を様々な形で活用していただくことができます。
例えば自分の通話内容を、通話しながら確認することができるようになります。
電話で話していると、どこまで話したかわからなくなってしまうことがありませんか?
普通ならメモしながら電話すれば良いですが、音声認識を使えば全部自動でメモしてくれるようなものです。
スムーズな応対や伝え忘れの防止に貢献してくれることでしょう。
AmiVoice® Communication Suiteを気軽に試していただくことはできませんが、別のアプリでそれに近い体験をすることはできます。
UDトーク というアプリがあるので、こちらを使いながら雑談してみてください。
話した内容がその場で文字になる点においては、かなり近い体験となるはずです。
他にも色々な機能があるので紹介したいところですが、そろそろ本題に戻りたいと思います。
どうやって音声を取得するの?
通話内容を音声認識すると簡単に言いますが、そこには大きな壁が存在します。
そうです、音声です。
音声認識するには、通話の音声をどうにかして手に入れる必要があります。
いったいどうすれば良いのでしょうか?
幸い多くのコンタクトセンターでは、IP電話という電話機が導入されています。
もしくはIP電話の機能を持ったアプリがパソコンにインストールされています。
このIP電話のIPとは、IPアドレスのIPと同じものを指します。
つまりパソコンで使われているネットワークと同じ仕組みで動いていて、皆さんが知っているネットワークの知識を使うことができます。
まずはIP電話の通信内容を、ネットワーク上から取得する方法を考えていきます。
IP電話がアプリの場合は、同じパソコンで通信内容を取得するアプリをインストールすれば良いでしょう。
電話機の場合はアプリをインストールすることはできないので、ネットワークスイッチにミラーポートと呼ばれるポートを設定します。
ミラーポートにはネットワークスイッチの通信内容がそのまま送信されるので、音声認識サービスが搭載されたサーバに接続し、通信内容を取得します。
これでIP電話の通信内容を取得できました。
次は通話の内容を解析していきます。
SIPを解析しよう
多くのIP電話では、SIPと呼ばれるプロトコルが使用されています。
これはWebにおけるHTTPと同じ立ち位置になります。
SIPを通じてIP電話の各種操作や音声の制御が行われているので、通信内容からSIPを見つけて解析していきます。
最初は通話開始となるSIPを探すことになります。
SIPの通話は、INVITEというメッセージから始まります。
INVITE sip:bob@biloxi.com SIP/2.0
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds
Max-Forwards: 70
To: Bob <sip:bob@biloxi.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710@pc33.atlanta.com
CSeq: 314159 INVITE
Contact: <sip:alice@pc33.atlanta.com>
Content-Type: application/sdp
Content-Length: 142
※RFC3261より引用
`From`が電話をかけた側のアドレスで、`To`が電話のかけ先のアドレスになります。
アドレスが電話番号ではなくメールアドレスのような形式をしていますが、これはSIPがSIP URIという形式でアドレスを管理しているからです。
電話番号を入力して電話をかける場合は、裏で電話番号をSIP URIに変換しています。
そして詳細は省きますが、INVITEの一連やりとりが正常に完了すると、通話開始が確定します。
対して通話が終了する際には、BYEというメッセージが送信されます。
BYE sip:alice@pc33.atlanta.com SIP/2.0
Via: SIP/2.0/UDP 192.0.2.4;branch=z9hG4bKnashds10
Max-Forwards: 70
From: Bob <sip:bob@biloxi.com>;tag=a6c85cf
To: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 231 BYE
Content-Length: 0
※RFC3261より引用
こちらもBYEの一連のやりとりが正常に完了すると、通話終了が確定します。
後は通話の開始から終了の間にある音声を見つけ出し、取得するだけです。
SDPを解析しよう
通話の開始と終了はわかりましたが、SIP自体には肝心の音声のやりとりについては明記されていません。
実はINVITEのやりとりの過程で、SDPというプロトコルのデータをSIPのボディ部に入れて音声の送信先を指定しています。
v=0
o=USERNAME 0 0 IN IP4 192.0.2.4
s=SESSIONNAME
c=IN IP4 192.0.2.4
t=0 0
m=audio 55000 RTP/AVP 0
a=rtpmap:0 PCMU/8000
a=ptime:20
簡単に内容を解説しますと、192.0.2.4のUDPポート55000番に対して、RTPというプロトコルでPCMU/8000という形式で音声を送って欲しいという意味になります。
これで通話相手はどこに音声を送ってほしいのかを知ることができるので、通話が開始されると指定された通りに音声を送信します。
相手も同じようにSDPで音声の送信先を指定してくるので、お互いに音声を送信すれば双方向の音声のやりとりが成立します。
通話の音声を取得したいときも、SDPの内容に従って解析を行えば音声を取得できます。
取得した音声を音声認識にかけ、その結果を活用していきましょう!
まとめ
単純化していますが、以上がコンタクトセンターで音声認識を行う仕組みのひとつとなります。
Webとはまた違った世界ですが、コンタクトセンター業界でも音声認識はどんどん活用されてきています。
あなたが電話をかけたその先で、音声認識が活躍しているかもしれません。
この記事を書いた人
-
Bladean Mericle
普段はコンタクトセンター向けのアプリケーション開発に従事していますが、個人で技術同人誌の執筆活動もしています。いくつかは商業版としても出版されました。
: @BladeanMericleこれまでの著書はこちら