信仰テックにおける対話型AIアプリの構築方法

![COVER.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957687/b48d1063-89d7-471e-839b-80da14c5f455.png)

テクノロジーが進歩を続けるなか、より多くの信仰コミュニティが対話型AIを導入し、人々のつながりを深め、礼拝体験を向上させ、コミュニティ全体の結束を強化しています。[**最近の統計**](https://exponential.org/7-insights-on-how-churches-are-adopting-ai-in-2024/)によると、2023年には約37%の教会がAIツールを断続的に利用していましたが、2024年には66%以上に達すると予測されており、信仰とテクノロジーの融合が急速に進んでいることを示しています。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957687/8d08824b-ad91-44d9-82cf-7b77e6864fc1.png)


## 対話型AIが信仰体験を高める方法

[**対話型AI**](https://trtc.io/solutions/conversational-ai)は、聖典や信仰上のテキストの解釈、祈りのガイド、多様な文化背景に対応するメッセージ配信などを得意とし、感情面・精神面でのサポートを提供します。これにより、人々それぞれのニーズや好みに寄り添った、より意味のある[**信仰の旅**](https://trtc.io/solutions/faith-spiritual-wellness)を実現できます。以下では、音声ベースの対話型AIが信仰テックの世界でどのように活用できるか、具体例をいくつかご紹介します。

### 1. AI占星術：手軽なアストロロジー相談

多言語に対応した「バーチャル占星術師」は、リアルタイムで惑星の位置を解析し、パーソナライズされたホロスコープや洞察を提供します。ユーザーが質問すると、占星術的な予測を瞬時に提示し、音声対話形式で複数言語に対応できます。こうした即時性と柔軟性により、コミュニケーション上のハードルが下がるだけでなく、より幅広い層へ占星術のアドバイスを提供しやすくなります。

### 2. バーチャルメンター：24時間対応の精神的サポート

[**対話型AI**](https://trtc.io/solutions/conversational-ai)を活用したバーチャルメンターは、要求があった際に関連する聖典や精神的アドバイスを提供可能です。自然言語処理（NLP）や多言語にわたる音声対応を活用し、ユーザーが質問するだけで、適切な引用や状況に合わせた解釈を提案します。オンライン形式のため、地理的制限なくスケジュールが合わない時でも精神的な支えを得られ、忙しい日々の中でも信仰を保ちやすくなります。

### 3. インテリジェント・ガーディアン：家庭で得られる知恵

インテリジェント・ガーディアンは[**対話型AI**](https://trtc.io/solutions/conversational-ai)が統合された専用ハードウェアで、日々の読経や信仰に関する質問への回答、精神的な励ましを提供します。クラウドベースの学習機能やリアルタイムの翻訳機能を活用し、ユーザーの嗜好に自動的に合わせる仕組みになっています。家庭で定期的な宗教的実践を行いたい場合や、ちょっとした自省の時間を持ちたい場合に、このテクノロジーと伝統的なアプローチを組み合わせた形態が役立つでしょう。

### 4. 信仰関連ショッピングのためのAIアバター：文化的背景を添えた購入体験

AIアバターを活用すると、聖典や祈りの道具、その他の宗教関連アイテムなどをおすすめするだけでなく、その背後にある精神的背景も併せて説明できます。複数言語に対応した音声対話機能により、世界中の信仰者が各アイテムの宗教的または文化的意義を理解しやすくなります。ライブ配信イベントやオンライン交流と組み合わせれば、宗教指導者や仲間の信徒、オンラインショッピング利用者同士の交流をさらに活性化します。

## Tencent RTC SDK を使ってWebベースのリアルタイム対話アプリを構築する

以下では、[**Tencent RTC SDK**](https://trtc.io/document/68337?product=rtcengine&menulabel=serverfeaturesapis)を使い、UIを持たないリアルタイムチャットアプリをWeb環境で実装する方法の概要を紹介します。このアプローチは、音声品質を最大化しながらインターフェイスの複雑さを抑え、音声ベースAIとのやり取りをスムーズに実現することを目指しています。

![2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957687/8a57fcc5-7df6-4583-9f71-04b972f9acff.png)


### **前提条件**

[サービスを有効化](https://trtc.io/document/69002?product=rtcengine&menulabel=serverfeaturesapis)してください。

### **I. RTC Engine SDK の統合**

**ステップ1：RTC Engine SDK のプロジェクトへのインポートと入室処理**

[UIのないWeb & H5版の統合ガイド](https://trtc.io/document/59649?platform=web&product=rtcengine&menulabel=sdk)

**ステップ2：音声ストリームの開始**

[trtc.startLocalAudio()](https://web.sdk.qcloud.com/trtc/webrtc/v5/doc/zh-cn/TRTC.html#startLocalAudio) メソッドを使ってマイクの使用を開始し、オーディオストリームをルームに配信します。

```java
await trtc.startLocalAudio();
```

### **II. AIとの対話を開始する**

**StartAIConversation でAI対話を起動する**

バックエンド側で [StartAIConversation](https://trtc.io/document/64963?product=rtcengine&menulabel=serverfeaturesapis) API を呼び出し、チャットボットをルームに追加しAI対話を開始します。

**現在サポートされている** **`STTConfig`  `LLMConfig`** **および**  **`TTSConfig`** **のパラメータ説明：**

[Speech-to-Text(STTConfig)](https://trtc.io/document/69592?product=rtcengine&menulabel=serverfeaturesapis)

[Large Language Model Configuration(LLMConfig)](https://trtc.io/document/68338?product=rtcengine&menulabel=serverfeaturesapis#)

[Text-To-Speech Configuration(TTSConfig)](https://trtc.io/document/68340?product=rtcengine&menulabel=serverfeaturesapis#)

**最初に [StartAIConversation](https://trtc.io/document/64963?product=rtcengine&menulabel=serverfeaturesapis) API を呼び出す前に、** **`LLMConfig`** **や** **`TTSConfig`** **のパラメータを確認しておくことを推奨します。詳細は以下を参照してください：**

[Conversational AI Parameter Verification](https://github.com/notedit/trtc-ai-api-check)

### **III. AIとの対話字幕やチャットボットステータスの受信**

クライアント側では、RTC Engine SDK が提供する[カスタムメッセージの受信](https://trtc.io/document/47866)を利用して、リアルタイム字幕やチャットボットのステータスなどのコールバックを取得できます。**cmdIDの値は1に固定されています**。

**リアルタイム字幕の受信**

メッセージ形式：

```java
{
  "type": 10000, // 10000 はリアルタイム字幕を示す
  "sender": "user_a", // 発話者のユーザーID
  "receiver": [], // 受信者のユーザーIDリスト。実際にはルーム内でブロードキャストされる
  "payload": {
     "text":"", // 音声認識されたテキスト
     "translation_text":"", // 翻訳後のテキスト
     "start_time":"00:00:01", // 文が始まったタイムスタンプ
     "end_time":"00:00:02",   // 文が終わったタイムスタンプ
     "roundid": "xxxxx", // 会話ラウンドの一意ID
     "end": true // true の場合、その文は完結している
  }
}
```

**チャットボットステータスの受信**

メッセージ形式：

```java
{
  "type": 10001, // チャットボットステータス
  "sender": "user_a", // 送信者のユーザーID（チャットボットID）
  "receiver": [], // 受信者のユーザーIDリスト。実際にはルーム内でブロードキャストされる
  "payload": {
    "roundid": "xxx", // 会話ラウンドの一意ID
    "timestamp": 123,
    "state": 1,      // 1: リスニング中; 2: 思考中; 3: 発話中; 4: 中断された
  }
}
```

**サンプルコード**

```java
trtcClient.on(Tencent RTC.EVENT.CUSTOM_MESSAGE, (event) => {
    let data = new TextDecoder().decode(event.data);
    let jsonData = JSON.parse(data);
    console.log(`receive custom msg from ${event.userId} cmdId: ${event.cmdId} seq: ${event.seq} data: ${data}`);
        
    if (jsonData.type == 10000 && jsonData.payload.end == false) {
        // 字幕の中間状態
    } else if (jsonData.type == 10000 && jsonData.payload.end == true) {
       // 文が完結
    }
});
```

### **IV. カスタムメッセージの送信**

RTC Engine のカスタムメッセージ送信はすべてクライアントを介して行われます。**cmdIDは2で固定**されています。

詳しくは[メッセージの送受信](https://trtc.io/document/47866)を参照してください。

ASR（STT）処理をスキップし、直接テキストでAIサービスとやり取りすることも可能です。

```java
  {
  "type": 20000, // クライアント側で送信するテキストメッセージ
  "sender": "user_a", // 送信者のユーザーID。サーバーはこのIDが有効かどうか確認する
  "receiver": ["user_bot"], // 受信者のユーザーIDリスト。チャットボットのユーザーIDのみ指定する
  "payload": {
    "id": "uuid", // トラブルシューティング用メッセージID
    "message": "xxx", // メッセージ内容
    "timestamp": 123 // トラブルシューティング用のタイムスタンプ
  }
}
```

中断の操作を行うには、以下のような信号を送信します。

```java
{
  "type": 20001, // クライアント側で送信する中断信号
  "sender": "user_a", // ユーザーIDの有効性をサーバーが確認する
  "receiver": ["user_bot"], // チャットボットのユーザーIDのみ指定する
  "payload": {
    "id": "uuid", // トラブルシューティング用メッセージID
    "timestamp": 123 // トラブルシューティング用のタイムスタンプ
  }
}
```

**サンプルコード**

```java
const message = {
  "type": 20001,
  "sender": "user_a",
  "receiver": ["user_bot"],
  "payload": {
    "id": "uuid",
    "timestamp": 123
  }
};

trtc.sendCustomMessage({
  cmdId: 2,
  data: new TextEncoder().encode(JSON.stringify(message)).buffer
});
```

### **V. AI対話を停止し、RTC Engine ルームから退出する**

1. サーバー側でAI対話タスクを停止

[StopAIConversation](https://trtc.io/document/65296?product=rtcengine&menulabel=serverfeaturesapis) API をバックエンドで呼び出し、この対話を終了します。

2. クライアント側でRTC Engineルームから退出  
詳細については以下を参照してください。  
[UIのないWeb & H5版の統合ガイド](https://trtc.io/document/59649?platform=web&product=rtcengine&menulabel=sdk)

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957687/43fc88d2-b652-4991-ac6b-2ab811c5f033.png)


## 結論

[**対話型AI**](https://trtc.io/solutions/conversational-ai)は信仰コミュニティに新たな可能性をもたらし、宗教的実践をより包括的で、個々に合わせた魅力的なものに変革しつつあります。多くの教会や集会でこれらのソリューションが導入されるにつれ、文化的多様性、一対一のパーソナライズ、インタラクティブ体験といった面で、宗教・精神生活はさらなる進化を遂げるでしょう。

Tencent RTCの音声AI機能をアプリやハードウェアに統合する方法を知りたい方は、当社のConversational AI Engineをご覧ください。

私はSusieと申します。ライター兼メディアサービスプロダクトマネージャーとして活動し、世界中のスタートアップと協力して、SDKやAPIを用いたリアルタイムコミュニケーションソリューションを構築しています。

対話型AIが信仰とテクノロジーにもたらす新たなチャンスをもっと知りたい方は、[**こちらからお気軽にお問い合わせ**](https://sc-rp.tencentcloud.com:8106/t/RA)ください。