Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

181006 nishimoto-kaggle

625 views

Published on

舞え!ひろしま Kaggler
音声認識とPython
PyCon mini Hiroshima 2018
西本卓也 nishimotz @24motz / shuaruta.com

Published in: Technology
  • Be the first to comment

181006 nishimoto-kaggle

  1. 1. 舞え!ひろしま Kaggler (音声認識とPython) with 株式会社シュアルタ紹介 2018年10月6日 西本卓也 @24motz PyCon mini Hiroshima
  2. 2. タイトルだけ立派ですみません https://www.hiroshima-navi.or.jp/special/kagura/ • 舞え!ひろしま Kaggler 2
  3. 3. お前だれよ @24motz / nishimotz • 広島 → 早稲田大学 → 京都工芸繊維大学 → 東京大学 • 機械学習、認知科学、障害者支援 • 広島 • ソフトウェア受託開発 • スタートアップ企業(リモートワーク) • 株式会社シュアルタ設立(2018年)@ fabbit 広島駅前 • Python と C++ と JavaScript • 非営利の活動 • スクリーンリーダーNVDA日本語版 • PCNひろしま / PyCon mini Hiroshima / すごい広島 with Python 3
  4. 4. 株式会社シュアルタ • チーム家族 4
  5. 5. ペットイベントと障害者イベント • 多様性の受容 • 既視感 • イヌ(盲導犬)と一緒に歩く来場者たち • ペットバギー(車椅子)で通行する人たち • トラブル(粗相)があると駆けつけるスタッフ Sebastian Hartlaub https://commons.wikimedia.org/wiki/File:Hundepfeife01.JPG
  6. 6. NVDA: Non Visual Desktop Access • オープンソースの Windows 対応スクリーンリーダー • 3ヶ月ごとにリリース、新しい技術や環境への対応 • コアから Python で実装されている • 2010年ごろから日本語化 • 最初は日本語音声合成エンジンの組み込み • 2011年 PyCon mini JP / 2012年 PyCon JP 併催イベント • NVDA日本語チーム • 日本語版配布(コードサイニング/保守) • 本家版NVDAの開発と翻訳 • 視覚障害者・技術者・開発者に対する普及啓発 6
  7. 7. NVDAチートシート 7
  8. 8. Pythonで音声認識 • クラウド音声認識サービス + Python API • 音声認識エンジン + Python wrapper • Julius + socket 通信など • ときどき雑誌などでノウハウが紹介される • Pocketsphinx Python • pip でインストールできる、英語ならすぐに動かせる • ところで音声認識って? • 孤立単語認識、連続単語音声認識(ディクテーション) • まるで将棋(計算機工学総動員 → よくわからないブラックボックス) 8
  9. 9. スマートスピーカーの実現例 • ホットワードを聞き取るまで • 低消費電力でローカルの音声認識 • 語彙サイズが小さい(数単語) • 対雑音性が求められる • どこから聞こえたか(音源定位) • ホットワードが発話されたら • それに続く音声を録音 • 音源定位情報を使って雑音除去 • 高性能・大語彙のエンジンで処理 • クラウドの場合もある 9
  10. 10. 音声認識とディープラーニング • TensorFlow Simple Audio Recognition tutorial • Open Speech Recording (AIY Project) • Kaggle competition 10 https://www.safaribooksonline.com/library/view/intelligent-mobile-projects/9781788834544/
  11. 11. AIY Voice Kit • Raspberry Pi でスマートスピーカーを自作する 11
  12. 12. MATRIX Voice
  13. 13. Snowboy
  14. 14. snowboy import snowboydecoder_arecord as snowboydecoder import subprocess def detected_callback(): subprocess.call("aplay clicker.wav", shell=True) detector = snowboydecoder.HotwordDetector("snowboy-23285.pmdl", sensitivity=0.4, audio_gain=1) detector.start(detected_callback=detected_callback) detector.terminate()
  15. 15. 「実践的AI人材育成法」 • PyCon JP 2018 (9月17日~18日) • 中山氏(東大松尾研) • AI人材育成のポイント • プログラミング • コンペティション • コミュニティ • パターン認識の歴史はコンペの歴史 • 画像/音声/音楽 • 共通のデータセットで性能の比較 • コンペでは育たない技術や人材もあるが(後述) 16
  16. 16. いま世界を見渡すと • Kaggle が話題 • 機械学習 • データサイエンス • 懸賞金? • 参加者 = Kaggler • ケイグラー? • カグラー? 17 https://www.kaggle.com/learn/overview
  17. 17. Kaggle コミュニティ • 人気 Kernel 探し • Jupyter のカーネル • speech で検索 • 656 voters を見つける 18
  18. 18. 音声信号処理の基礎 • データセット • TensorFlow SR Challenge https://www.kaggle.com/davids1992/speech-representation-and-data-exploration 19
  19. 19. Notebook (Kernel?) を Fork する 20
  20. 20. 21
  21. 21. 22
  22. 22. 23
  23. 23. 24
  24. 24. 25
  25. 25. Jupyter Notebook + コンソール 26
  26. 26. バージョン管理・実行履歴 27
  27. 27. 活動の可視化 28
  28. 28. New Kernel 29
  29. 29. Script 30
  30. 30. タイトルをつけてcommit 31
  31. 31. 戻ると 32
  32. 32. console 33
  33. 33. ネットワークが使えない 34
  34. 34. Settings 35
  35. 35. commit するたびに再実行 36
  36. 36. Add Data 37
  37. 37. ../input フォルダを確認 38
  38. 38. DataからKernel探し 39
  39. 39. Delete Kernel は Options の中にある 40
  40. 40. test.7z の中身 41 Date Time Attr Size Compressed Name ------------------- ----- ------------ ------------ ------------------------ 2017-11-14 11:17:46 D.... 0 0 test 2017-11-14 11:30:34 D.... 0 0 test/audio 2017-11-14 11:28:56 ....A 32044 1117017472 test/audio/clip_000044442.wav 2017-11-14 11:29:04 ....A 32044 test/audio/clip_0000adecb.wav 2017-11-14 11:28:55 ....A 32044 test/audio/clip_0000d4322.wav 2017-11-14 11:29:00 ....A 32044 test/audio/clip_0000fb6fe.wav 2017-11-14 11:29:17 ....A 32044 test/audio/clip_0001d1559.wav 2017-11-14 11:28:18 ....A 32044 test/audio/clip_0002256ed.wav 2017-11-14 11:29:19 ....A 32044 test/audio/clip_0002a4a1f.wav 2017-11-14 11:28:24 ....A 32044 test/audio/clip_0002d9b83.wav 2017-11-14 11:29:46 ....A 32044 test/audio/clip_000373a5b.wav 2017-11-14 11:28:19 ....A 32044 test/audio/clip_0003c7122.wav 2017-11-14 11:29:26 ....A 32044 test/audio/clip_0003e6aee.wav 2017-11-14 11:30:14 ....A 32044 test/audio/clip_00049951d.wav
  41. 41. sample_submission.csv 42 fname,label clip_000044442.wav,silence clip_0000adecb.wav,silence clip_0000d4322.wav,silence clip_0000fb6fe.wav,silence clip_0001d1559.wav,silence clip_0002256ed.wav,silence clip_0002a4a1f.wav,silence clip_0002d9b83.wav,silence clip_000373a5b.wav,silence clip_0003c7122.wav,silence clip_0003e6aee.wav,silence clip_00049951d.wav,silence clip_0004c6707.wav,silence clip_0004f8b63.wav,silence clip_00068e281.wav,silence
  42. 42. End-to-end baseline TF Estimator LB • スペクトログラムの画像認識 43
  43. 43. ちょっと手直し • データセットに test がない • train の一部で結果を出力 • フルで実行すると終わらない • タスクを簡単にする • one two three • データセットを減らす • glob • 畳み込みレイヤーを減らす • 4段から1段に 44
  44. 44. learn_runner.run 45
  45. 45. GPU on • NVIDIA Tesla K80 • 混んでたら起動時に待たされる 46
  46. 46. commit するたびに run all してしまう 47
  47. 47. カーネル再起動 48
  48. 48. 1分くらいで完了、結果は不安定? 49
  49. 49. Kaggle まとめ • クラウドで実行されるデータ分析と機械学習の環境 • フォークして改良して公開 • データセットも簡単に共有 • さらに、コンペティションと交流 • ブラックボックスと戦う第一歩 • Python の知識も、機械学習の知識も生かせる • 無料、環境構築不要 • 立ち上がれ、広島の Kaggler たち! 50
  50. 50. Kaggle CLI • sudo python3 -m pip install kaggle • Account 画面で API key 生成 JSON ファイルを ~/.kaggle/kaggle.json に置く • $ kaggle competitions download -c tensorflow-speech-recognition-challenge 51 kaggle competitions {list,files,download,submit,submissions,leaderboard} kaggle datasets {list, files, download, create, version, init} kaggle kernels {list, init, push, pull, output, status} kaggle config {view, set, unset}

×