音声認識と合成についてのまとめ
音声認識と合成について1日学んだことのまとめ。
音声認識について
音声認識とは音声を文字列に変換することで、Speech-to-Textとも呼ばれる。
音声認識の基本的な考え方はスペクトルから読み取れるパラメータには発音ごとに特有のパターンがあるとして、そのパターンを捉えようとするものである。
音声を窓関数で切り出した後にフーリエ変換でスペクトルにし、そのスペクトルを時々刻々記録したものはサウンドスペクトログラムと呼ばれる。音声波形では時間と振幅のみ、スペクトルでは周波数と強さのみが読み取れるが、時間も周波数も強さも読み取れるのがサウンドスペクトログラムである。
スペクトルから読み取れるパラメータというのは特徴量系列と呼ばれる数ベクトルで表される。その抽出方法は複数あるが、代表的なものとしてはMFCCと呼ばれるものがある。
音声認識はこの特徴量系列がどの単語列に対応するかを決定する問題に帰着する。HMMによってモデル化する場合では単語列と特徴量系列がモデル化され、確率的に対応づけられる。
単語列として認識された音声は単語の並びを制約する言語モデルにかけられる。言語モデルには文が文法的に正しいか正しくないかの2択で判断するものと、単語の並びがありうるかを確率的に評価するものがある。
音声合成について
音声の合成には
- 文を全部録音する録音合成
- 単語単位で録音する編集合成
- 実際の声を元にパラメータを設定するパラメータ合成
- 文字列から音声を合成するテキスト音声合成(Text-to-Speech)
などがある。
このうち、テキスト音声合成の手順をまとめたものが下図である。(音声合成の基礎より)
単語アクセント
アクセントは音の強さによるもの(英語など)と音の高さによるもの(日本語など)がある。アクセントの単位は音節である場合とモーラ(拍)である場合があり、多くの言語では音節であるが、日本語はモーラを単位とする。
高音から低音に移るモーラをアクセント核と呼ぶ。日本語のアクセントの種類はアクセント核の位置によって分類できる。
助詞のアクセントは前後に接続する単語のアクセント型に依存する。また、単語と単語が合わさって複合語となるときにアクセント型が変わる場合がある。
ターミナルでのWi-fi経由のインターネット接続のトラブルシューティング方法について
Wi-fi経由でうまくインターネットに接続できない時のトラブルシューティング方法
そもそもWi-fiに接続できているかどうかの確認
ターミナルで
$ ifconfig
と入力すると
Kota[02:02:45]:documents $ ifconfig lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP> inet 127.0.0.1 netmask 0xff000000 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 nd6 options=201<PERFORMNUD,DAD> gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280 stf0: flags=0<> mtu 1280 XHC20: flags=0<> mtu 0 en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 08:6d:41:c2:18:d4 inet6 fe80::8cb:a5e:68fa:6be8%en0 prefixlen 64 secured scopeid 0x5 inet 192.168.3.9 netmask 0xffffff00 broadcast 192.168.3.255 nd6 options=201<PERFORMNUD,DAD> media: autoselect status: active p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304 ether 0a:6d:41:c2:18:d4 media: autoselect status: inactive awdl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1484 ether 1a:46:bf:a5:da:31 inet6 fe80::1846:bfff:fea5:da31%awdl0 prefixlen 64 scopeid 0x7 nd6 options=201<PERFORMNUD,DAD> media: autoselect status: active en1: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500 options=60<TSO4,TSO6> ether 9a:00:07:9a:cb:00 media: autoselect <full-duplex> status: inactive bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=63<RXCSUM,TXCSUM,TSO4,TSO6> ether 9a:00:07:9a:cb:00 Configuration: id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0 maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200 root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0 ipfilter disabled flags 0x2 member: en1 flags=3<LEARNING,DISCOVER> ifmaxaddr 0 port 8 priority 0 path cost 0 nd6 options=201<PERFORMNUD,DAD> media: <unknown type> status: inactive utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000 options=6403<RXCSUM,TXCSUM,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM> inet6 fe80::26cf:58ce:145:3b02%utun0 prefixlen 64 scopeid 0xa nd6 options=201<PERFORMNUD,DAD> utun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1380 options=6403<RXCSUM,TXCSUM,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM> inet6 fe80::a4d5:2253:8d2e:5ca4%utun1 prefixlen 64 scopeid 0xb nd6 options=201<PERFORMNUD,DAD>
このようにずらずらと現在接続しているWi-fiの情報が出てくる。一方で
$ ifconfig | grep broad
と入力すると
Kota[02:08:19]:documents $ ifconfig | grep broad inet 192.168.3.9 netmask 0xffffff00 broadcast 192.168.3.255
このように先ほどの情報の内、自分のPCのIPアドレスと接続しているWi-fiのIPアドレスだけが抽出されて表示される。これでそもそもWi-Fiに接続できているか、接続しているならどのWi-Fiに接続しているのかが分かる。
Wi-Fi経由でインターネットに接続できているかの確認
さらに
$ ping 8.8.8.8
と入力すると
Kota[02:10:34]:documents $ ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from 8.8.8.8: icmp_seq=0 ttl=58 time=117.653 ms 64 bytes from 8.8.8.8: icmp_seq=1 ttl=58 time=59.169 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=58 time=42.861 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=58 time=42.504 ms 64 bytes from 8.8.8.8: icmp_seq=4 ttl=58 time=71.117 ms 64 bytes from 8.8.8.8: icmp_seq=5 ttl=58 time=60.194 ms
このように、ごく小さい64バイトの情報量をやり取りするのにかかる時間をリアルタイムで表示してくれ、「controlキー+C」で次のように結果をまとめて終了する。
^C --- 8.8.8.8 ping statistics --- 6 packets transmitted, 6 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 42.504/65.583/117.653/25.367 ms