Slide 1

Slide 1 text

たどころくん 1 号を支える技術 ikuma-t むせていたって喋りたい! エンペイてくtech 大LT 大会 ver 0.1.0 2023-09-15

Slide 2

Slide 2 text

ikuma-t IkumaTadokoro ikumatdkr ikuma-t.com ikumatadokoro 株式会社エンペイで働く、フロントエンドが好きなエンジニア。 表情パターンは9 割笑顔、1 割(´ ・ω ・`) なやさおです。

Slide 3

Slide 3 text

コロナ後で声がうまく出せない 状況を技術でどう乗り切ったか 今回のテーマ

Slide 4

Slide 4 text

製品紹介

Slide 5

Slide 5 text

たどころくん 1 号 ローカルで動く機械音声通話アプリ ブラウザさえあれば動作する 搭載している機能 発話 ピッチ調整 プリセット機能 履歴機能 竹村さん腹筋崩壊機能

Slide 6

Slide 6 text

導入実績 開発チームの日常におけるコミュニケーション:導入事例多数 イベントファシリテーション:多くのデイリースクラムでご利用いただいてます! 登壇: 重要なイベントでも肉声による発表と一切遜色なく遂行した実績あり ライトなLT イベントでもご利用いただいてます 竹村さんの腹筋を崩壊させた数:プライスレス 様々なシーンでご利用いただいてます

Slide 7

Slide 7 text

技術紹介

Slide 8

Slide 8 text

SpeechSynthesisUtterance 音声読み上げのコアとなる技術 SpeechSynthesisUtterance はウェブ音声 API のインターフェイスで、発話リクエストを表します。 これには、発話サービスが読み上げ るコンテンツと、その読み上げ方についての情報(言語、音の高低、音量)が含まれます。 これだけで機械音声による読み上げが実装できます。 ちなみに「Synthesis 」は「合成」、「Utterance 」は「発声」という意味です(合成音声読み上げAPI ) ブラウザ標準の音声合成API const uttr = new SpeechSynthesisUtterance(" ずんだもんだぞ"); window.speechSynthesis.speak(uttr);

Slide 9

Slide 9 text

たどころくん 1 号の正体 … 実際にブラウザで確認してみます たどころくん 1 号の正体は ... 「 Kyoko 」! 見た目は機械音声、中身は… const voices = window.speechSynthesis.getVoices() // 日本語向けの音声を確認する const locale = 'ja-JP' const japaneseVoices = voices.filter((voice) => voice.lang === locale) // これが機械音声を喋っている人の真の名前... japaneseVoices[0].name

Slide 10

Slide 10 text

履歴管理 永続化にはlocalStorage を使用しています。プレゼンもこれで乗り切ります。 意外と便利

Slide 11

Slide 11 text

システム音声を通話アプリに載せる 1. (スピーカーに漏れ出る前にキャッチ)Blackhole でシステム音を拾えるようにする 2. (正直よくわからん)Audio MIDI 設定でBlackhole と音声出力デバイスを合成した装置を作る 3. (システム音声を外部にむける)通話アプリのマイクをBlackhole にする 試行錯誤してM1 Mac だとこれでできたってやつ

Slide 12

Slide 12 text

開発小話 開発リポジトリの名前は「 bossun 」 機械音声といえば、ということで「スイッチ」と名付けようとしたが、「switch 」 がプログラミングとしては汎用的な名前すぎて、ネタアプリに使うのは微妙という ことで、同じSKET DANCE から「ボッスン」を採用 制作は高速、されど仕事は進まず 「明日は復帰できるかな?」と思った日に勢いで1h もかからないでアプリ実装。 実装は高速で終わったものの、体調が万全でない中無理をしたため、翌日は一日中 頭がぼーっとして仕事どころではなかったです。

Slide 13

Slide 13 text

喋らなくていいおかげで肺の負担は下げられたし、 皆さんにも楽しんでいただけたようでなによりです おわり

Slide 14

Slide 14 text

ありがとうございました! Slides on ikuma-t.com