LoginSignup
17
17

More than 5 years have passed since last update.

ドコモの雑談対話APIとお話してみた。

Last updated at Posted at 2015-06-21

前回はドコモのOAuthSDKforiOSをSwiftで書き直しました。
今回は、同じくドコモから提供されている雑談対話APIを試してみました。
雑談対話API

雑談対話APIは、ユーザの発話テキストを受け付け、その入力に対して自然な会話となる雑談を提供します。

このAPIにもiOS用SDKが用意されているのでそれを使っています。
また、AVSpeechSynthesizerを使ってAPIからの返答を読み上げるようにしました。

ViewController.swift
    //質問文問い合わせリクエスト
    var param: DialogueRequestParam!
    //雑談対話問い合わせ処理
    var dialogue: Dialogue!
    //回答データ
    var resultData: DialogueResultData!
    //エラー情報
    var sdkError: SdkError!
    var talker: AVSpeechSynthesizer!

初期化

ViewController.swift
        //認証情報初期化
        //docomo Developer supportから取得したAPIキーを設定
        AuthApiKey.initializeAuth("APIキー")

        param = DialogueRequestParam()
        dialogue = Dialogue()
        sdkError = SdkError()
        talker = AVSpeechSynthesizer()

会話リクエスト

ViewController.swift
        //発話を設定
        param.utt = "こんにちわ"
        //APIのキャラクタ設定(デフォルト:ゼロ,20:桜子,30:ハヤテ)
        param.character = 20

        /*
          雑談対話問い合わせ処理にデータを渡す.
          APIからは音声合成用情報が「resultData.yomi」に返ってくるので
          AVSpeechSynthesizerで読み上げる.
          コンテキストID(resultData.context)を使うことで継続した会話ができる.
        */
        dialogue.request(param, onComplete: { (resultData) -> Void in
            self.param.context = "\(resultData.context)"
            let utterance = AVSpeechUtterance(string: "\(resultData.yomi)")
            utterance.voice = AVSpeechSynthesisVoice(language: "jp-JP")
            utterance.rate = 0.2
            utterance.pitchMultiplier = 1.4
            self.talker.speakUtterance(utterance)
        }) { (sdkError) -> Void in
            println("\(sdkError)")
        }

動作テストの動画をアップしました。
YouTube
docomoの雑談対話APIとお話してみた。
ニコ動
ネットの中に住む「女子高生 桜子 16歳」(公式設定)とお話してみた。

個人的に、AVSpeechSynthesizerの読み上げは味気ない感じがしました。
ドコモからは音声合成APIも提供されているのでそっちに置き換えてみようと思っています。

17
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
17