Skip to content

Instantly share code, notes, and snippets.

@hironytic
Created September 2, 2018 14:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hironytic/aec041254892856f3a52fcd363dc41db to your computer and use it in GitHub Desktop.
Save hironytic/aec041254892856f3a52fcd363dc41db to your computer and use it in GitHub Desktop.
iOSDC Japan 2018のLT「全部iOSにしゃべらせちゃえ!」に使ったシナリオ。
{
"language": "ja-JP",
"rate": 0.5,
"pitch": 1.0,
"volume": 0.8,
"postDelay": 0.5,
"presets" : [
{
"text" : "準備できましたぁ"
},
{
"text" : "それは面白い質問ですね"
},
{
"text" : "かんっぱーーーーぁい",
"volume": 1.0,
"rate": 0.4
},
{
"text" : "テスッテス!音声を確認しています。あめんぼ赤いな、あいうえお。"
}
],
"actions": [
{
"type": "changeSlidePage",
"page": 0
},
{
"type": "pause"
},
{
"type": "speak",
"text": "それでは発表します。"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "まず、シーエフピーに応募したプロポーザルがこちらです。"
},
{
"type": "speak",
"pitch": 1.6,
"postDelay": 0,
"text": "いっけなーい。トークトーク。私ひろん。"
},
{
"type": "speak",
"pitch": 1.7,
"rate": 0.8,
"postDelay": 0,
"text": "今年もiOSDCのLTに応募したの。でもiOSDCは競技LT。オーディエンスもいっぱいいるから緊張してしゃべれないよー。あ、そうだ! エーブイスピーチシンセサイザーちゃんとPDF Kitくんに頼めば、代わりに発表してくれるんじゃない?私、"
},
{
"type": "speak",
"pitch": 1.6,
"text": "あったまいいー…って本当に採択されたらどうしよう?"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"postDelay": 1.0,
"text": "本当に採択されました。"
},
{
"type": "speak",
"postDelay": 0,
"text": "もしかして、採択してる人たち"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"volume": 1.0,
"pitch": 0.8,
"text": "バカなの?"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "wait",
"seconds": 2
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "ここで、私の横でくつろいでいる彼を紹介します。"
},
{
"type": "speak",
"text": "メガネをかけた犬のアイコンで、ひろん、というハンドルネームを使っています。徳島県から来ました。よろしくお願いします。"
},
{
"type": "speak",
"text": "なお、しゃべっている私は、iOSです。"
},
{
"type": "changeSlidePage",
"page": 1
},
{
"type": "speak",
"text": "さて、プロポーザルにはふたつのキーワードが出てきました。"
},
{
"type": "changeSlidePage",
"page": 6
},
{
"type": "speak",
"text": "エーブイスピーチシンセサイザーと、"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "PDF Kitです。"
},
{
"type": "speak",
"text": "このふたつを簡単に説明します。"
},
{
"type": "speak",
"text": "なお、発表資料はあとで公開しますので、今は私の声をしっかり聞いてくださいね。"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "まず、エーブイスピーチシンセサイザーですが、テキストの読み上げをしてくれるAPIです。結構、古くからあって、iOS 7以上で利用可能です。"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "こんな感じですうぎょう書くだけで、簡単にしゃべらせることができます。"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "ちょっと手を加えれば、"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"rate": 0.7,
"text": "話すスピードを変えたり、"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"pitch": 0.5,
"text": "声の高さを変えたりもできます。"
},
{
"type": "wait",
"seconds": 1
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "次はPDF Kitです。"
},
{
"type": "speak",
"text": "こちらはPDFについていろいろ行うためのフレームワークです。"
},
{
"type": "speak",
"text": "iOSでは11から利用できる新しいAPIです。"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "その中にPDFビューというものがあります。"
},
{
"type": "speak",
"text": "名前のとおり、PDFを表示するビューで、ユーアイイメージビューに画像を表示させるのと変わらないくらいの手間でPDFを表示することができます。"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "しかも、プログラムでページを指定して表示させることができます。"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "ということで、このふたつを使った作戦はこうです。"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "まず、Keynoteのようなプレゼンツールを使ってスライドを作成します。"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "それをPDF形式で書き出して、"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "書き出したPDFをPDFビューに表示させます。"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "一方で、ページの切り替えや、話す内容を指示したシナリオを作成して、"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "それに基づいて、エーブイスピーチシンセサイザーにしゃべらせたり、PDFビューのページを切り替えれば、iOSに発表を代わってもらえそうです。"
},
{
"type": "speak",
"text": "この作戦を立てた、かれ、実はプロポーザルを出した時点で、これらのAPIを使った経験はありませんでした。"
},
{
"type": "wait",
"seconds": 1
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "ついでに、iOSにはドキュメントベースのアプリの作成を支援する仕組みがあるので、これも使ってみることにして、"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "それから、会場で発表しますから、外部ディスプレイにも対応したいところです。"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "これらの技術を組み合わせて実際に作ったのが、いまうごいているこのアプリ、「発表くん1号」です。みなさん、拍手しましょう。"
},
{
"type": "wait",
"seconds": 3
},
{
"type": "speak",
"text": "ソースはギットハブで公開しています。よかったら見てみてください。ついでにスターください。"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "ところで、実際に私にしゃべらせて困ったことがいくつかあります。"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "例えば、このような単語はうまくしゃべるのが苦手です。"
},
{
"type": "speak",
"text": "AVSpeechSynthesizer"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "wait",
"seconds": 1
},
{
"type": "speak",
"text": "数行書くだけで"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "wait",
"seconds": 1
},
{
"type": "speak",
"text": "でも、日本語は便利なので",
"postDelay": 0
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "これらはカタカナやひらがなで指示してもらいました。"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "次に、どうしても聞き取りづらいものも出てきます。例えば、"
},
{
"type": "speak",
"text": "もしかして、運営って"
},
{
"type": "speak",
"volume": 1.0,
"pitch": 0.8,
"text": "バカなの?"
},
{
"type": "wait",
"seconds": 1
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "こういうのはどうしようもないので、",
"postDelay": 0
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "言い回しを変えることで逃げました。"
},
{
"type": "speak",
"text": "でも、これって、人間が話してもよくあることですよね。"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "最後にこの発表のまとめです。"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "まず、シーエフピーにネタで煽ると、煽り返されるという知見が得られました。"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "あとは全部、私ががんばりました。"
},
{
"type": "speak",
"text": "ひろん、他に、何か言い残したことはありますか?"
},
{
"type": "wait",
"seconds": 5
},
{
"type": "speak",
"text": "あー、ごめんなさい。もう時間ですね。"
},
{
"type": "changeSlidePage",
"page": "next"
},
{
"type": "speak",
"text": "これで発表を終わります。ご清聴ありがとうございました。"
},
{
"type": "pause"
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment