Skip to content
No description, website, or topics provided.
Kotlin Python HTML Shell JavaScript Makefile Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
android
docs
images
server
.gitignore
LICENSE
PRIVACY_POLICY.md
README.md

README.md

RecMe

RecMe

↑動画はロゴをクリック

製品概要

Education x Tech

自分で作る 自分のための 英語学習アプリ

背景と課題

普段自分が話す表現を、ただ英語で話したいだけ

  • 咄嗟に英語が出てこない
  • 日常会話さえできればいいと思っている
  • 故に,猛勉強する気は無い

原因

  • 英会話例文集とかを見ても使わなさそうな場面の英会話が多すぎて、実際の会話で役立てる場面がごくわずかである
    • 勉強する労力に対して実際に英会話の場面で使える数が見合っていない
    • もっと他に覚えるべき文章があるはず

製品説明(具体的な製品の説明)

ユーザの発言をアプリで録音・言語化し、自分専用の学習データ を作る。 自分がよく使っている文章順で その文と英訳を表示し英会話の勉強に役立てるアプリ

使い方

  1. アプリを起動して録音を開始
  2. 発言を録音する(バックグラウンド動作可)
  3. 認識結果から英文と和文のペアを確認、クイズ形式の練習も可能

  

特長

日々の日常会話を全て保存

  • 左スワイプで集音開始
  • アプリを閉じていても、バックグラウンドで集音
  • 認識精度の悪いセンテンスは、端末側で送らないようにする機能
  • 文章をサーバーに送信

自分がよく使う日本語とそれに対応する英文を貯蓄

  • 自然言語処理や翻訳機能を利用
  • 翻訳結果のスコアを doc2vec などで計算し格納(閾値以下のスコアを持つ例文は棄却する)

自分専用の例文集を表示

  • 発言頻度の高い文章順で表示
  • 明らかに翻訳がおかしいとされるものは非表示に
  • ユーザーが自分で削除も可能
  • 文章をタップすることで、音声読み上げが可能

4. 自分専用の例文集を問題形式で表示

  • 英語を隠して表示
  • 「表示」することで答えの英語を表示し,タップで発音を確認
  • スワイプで次の問題へ

解決出来ること

このアプリを使うことで, 「普段自分が話す表現を,ただ英語で話したいだけ」のユーザが,「必要最低限の学習で,自分だけの表現を英語にすること」 ために取り組むことができるようになります.

今後の展望

  • 話者分離を用いて、自分の声だけを登録するように
  • 「音声認識 -> 文章分離 -> 翻訳」のそれぞれの精度の向上
    • 例えば、日本語を綺麗な日本語に変換してから、翻訳をかけるなど
  • edge to edge をちゃんと実装する(android)
  • score での文章の表示非表示の閾値をユーザーがイケてるUIから設定できるように

開発内容・開発技術

活用した技術

アーキテクチャ図

API・データ

  • Google Croud Natural Language API
  • Google Croud Translation API

フレームワーク・ライブラリ・モジュール

  • バックエンド
    • インフラ: nginx, uwsgi, sakura vps
    • サーバーサイド: python, django
    • データベース: mysql, redis
    • ジョブキュー: celery
  • アプリケーション
    • android: kotlin, kotlin coroutine, dagger, mvvm, android speech recognizer
  • デザイン
    • adobe illustrator, adobe photoshop, adobe XD, adobe affter effects

デバイス

  • android 端末
    • e.g. pixel 3a, pixel 4

研究内容・事前開発プロダクト(任意)

なし

独自開発技術(Hack Dayで開発したもの)

すべて二日間で開発

2日間に開発した独自の機能・技術

Android
  • アーキテクチャ
    • MVVM + Repositoryパターン + DI(dagger)
    • 選定理由 今回はAndroidエンジニアが3人と多めであり,同時開発においてブランチ同士が容易にコンフリクトすることが考えられた.故に,疎結合な設計が求められる. 当初はCleanArchitectureを導入することを考えたが,2日間という限られた時間内で開発するスピード感も求められるため,Domain層を排除した2-layerd-architectureを選定した.一方でDpendencyInjectionを活用することで,疎結合を保っている.
  • バックグランドでアプリが起動していて,音声認識して文字起こしする技術
  • 独自のスライドアニメーション
  • サーバに送る文字列が日本語として正常になるように精度の悪いセンテンスは送らないようにする機能
Server
  • ジョブキューフレームワークを用いて、Google Croud などでの演算は非同期で
  • Google Croud Natural Language API で分けきれない酷い日本語文章を、ヒューリスティックな手法で分解
  • Google Croud Translation API と Wikipedia のデータで学習した doc2vec を用い、翻訳結果をスコアリング
You can’t perform that action at this time.