Kyoto NotreDame University, 2022
このファイルは,京都ノートルダム女子大学の2022年後期の授業「AIとデータサイエンス入門」の第4回講義の講義資料(パワーポイント)と実習テキスト(Mathematicaノートブック)をまとめたものです.​
​「講義で学んだことを実習で体験し理解を深める」ために,毎回の授業は講義+実習で構成され,受講学生はWolfram Cloudで実習を行いました.​
​この授業の様子は,大学のホームページ(ND大ブログ)にも紹介されています.

AIとデータサイエンス 入門(実習)

ー第4回 データ活用のための技術
    (構造化データと非構造化データ) ー
2022/10/20 北村・金光(ウルフラムリサーチ)

本日の内容

◼
  • 1.先週の振り返り
  • ◼
  • 2.データ解析とは?
  • ◼
  • 3.画像のデジタル化
  • ◼
  • 4.音のデジタル化
  • ◼
  • 5.音声認識技術
  • ◼
  • 6.まとめ
  • ◼
  • 7.【実習】光の三原色(RGB)/画像処理/音の処理/音声認識
  • 講義スライド

    スライドの上のページ番号をクリックして,全16ページのスライドを順にご覧ください.
    Out[]=
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    指定教科書:はじめてのAIリテラシー(技術評論社)

    本日の実習

    ■
    光の三原色(RGB)
    RGBの組み合わせでどのように色が変わるかみてみよう.
    ■
    画像処理
    画像データの中身をみて,コンピュータが画像をどう扱っているのかを実感しよう.
    ■
    音の処理
    音データの波形を見てみよう.
    ■
    音声処理
    テキストから音声合成してみよう.

    光の三原色

    色は光の三原色(赤R, 緑G, 青B)からできている.

    RGBColor関数は,{赤,緑,青} の値を組み合わせることで色を表現する.値は,0~1の範囲で指定する.
    RGBColor[{1,0.5,0.2}]
    Out[]=
    スライダーを動かして,R,G,Bの色を変えてみよう.
    Manipulate[Graphics[{RGBColor[r,g,b],Disk[]}],​​r,1,"赤",0,1,Appearance"Open",​​g,0,"緑",0,1,Appearance"Open",​​b,0,"青",0,1,Appearance"Open",FrameLabel"RGBColor",ControlPlacementLeft]
    Out[]=
    ​
    赤
    0.
    緑
    0.
    青
    0.
    RGBColor
    3次元で,RGB( Red/Green/Blue) の色空間を見てみよう.
    キューブはマウスをドラッグすることで回転して見ることができる.
    Graphics3D[{Opacity[.7],{RGBColor[#],Cuboid[#,#+.1]}&/@Tuples[Range[0,1,.2],3]},AxesTrue,AxesLabel{"Red","Green","Blue"},Lighting"Neutral"]
    Out[]=

    画像処理

    実際に画像データを使って見ていこう.​
    ​まず,変数名 im に画像データを = でセットする.​
    ​必ず,下の画像のあるコードのセミコロン(;)の後ろにカーソルを合わせ,+して実行する.​
    ​(*ここを実行しないと,画像データを im という変数にセットされず,​
    ​その後のプログラムが正しく動かないので注意.)
    In[]:=
    im=
    ;

    画像データの中身

    ImageData関数で,画素値の並びが見れる.画像データの中身を見ると,数値の集合であることがわかる.
    Dimensions関数で 次元を見ると,画像データの画素数は,200x200 であることがわかる.
    最後の 3 は,1つのマスにRGBの3つのデータが入っていることを意味する.
    以下のプログラムで,[[1,1]]は,左上の1マスを指しており,{R,G,B} に対応している.
    これを RGBColor関数の引数として入れて実行すると,実際の色がわかる.

    リサンプリング

    200x200の画像を,50x50にリサンプリングする.
    標本化(サンプリング)の数を減らすと,解像度が下がり,画質が悪くなる.
    ImageResizeでもっと小さい数字にしたらどうなるだろうか?
    ​
    画像部分をマウスでクリックして,オレンジの枠の端の方でドラッグすると,表示サイズを変えられる.
    大きく表示して画質がどうなったかをよく見てみよう.

    白黒画像に変更

    0と1に二値化するBinarize関数に入れると,白黒の画像になる.リサンプリングした imR の画像で見てみよう.
    以下のプログラムを実行し,カラーのオリジナル画像データの時と画素値はどう変わったかを確認しよう.

    音の処理

    音データの波形を見てみよう.

    ExampleDataに入っている音データを取り込む.
    AudioPlot関数で音データの波形を見てみよう.
    データの中身はどうなっているだろうか?AudioData関数で確認してみる.
    データ数が多いので,最初の50個だけをプロットしてみる.
    縦軸のメモリの数字が非常に小さいことに注目.
    上のグラフではほぼ直線に見えていたところも,拡大すると細かい波形になっていることがわかる.

    ExampleData関数にはいろいろな音データが入っている.

    Drums(ドラム)の音を聞いてみよう.
    AudioPlot関数で見ると,2つの波形が表示される.
    これは,ステレオサウンド(スピーカーやイヤホンの右と左)である.

    音声処理

    英文から音声合成をしてみよう.

    SpeechSynthesize関数では,タイピングされた文章から音声合成をする.
    (文字列はダブルクォーテーション(")で囲むことに注意する.)
    AudioPlot関数で見てみる.
    SpeechRecognize関数では,逆に,音声(合成)データから文字起こしもできる.
    簡単な英文で音声合成してみよう.

    OMAKE: 音声認識の日本語対応バージョン

    *現在,Cloud版のMathematicaでは,英語のみ音声認識に対応しているが,PCにインストールするMathematica Desktop版では,一部の音声認識関数は,日本語にも対応している.

    日本語の文から音声合成(Desktop Mathematicaのみ対応)

    SpeechSynthesize関数では,タイピングされた文章から音声合成をする.
    (文字列はダブルクォーテーション(")で囲むことに注意する.)
    日本語として理解してほしい場合は,Language->”Japanese” というオプションを指定する.
    AudioPlot関数で見てみる.
    残念ながら,音声から文字起こしのできるSpeechRecognize関数はまだ英語以外には対応していない.
    マイクからの音声をリアルタイムに取り込むこともできる.
    さまざまな音声処理の関数は言語に関わらず利用できる.例えば,録音した音声データにリバーブ(残響効果)を与えてみる.
    ©Mihoko Kitamura/Akiko Kanamitsu, 2022​
    ​mihokok@wolfram.com, akikok@wolfram.com