Googleマップのナビ音声を茜ちゃんに変える

## デモ

https://youtu.be/2Sk2CqeRr2E

ｱｶﾈﾁｬﾝｶﾜｲｲﾔｯﾀｰ

そんな高度なことはしてないですが、
ブログとか持ってなくて、他に書く場所もないのでここに書かせてください。

## ひつようなもの

* Android端末
* Andorid Google Map アプリ
* Andoroid ナビボイスチェンジャー アプリ
 * https://play.google.com/store/apps/details?id=jp.nekoteki.android.navivoicechanger&hl=ja&gl=US
* PC (Windows)
* PC ZIP圧縮ソフト(WinRARなど)
* Android PC データ転送用ケーブル
* **【重要】茜ちゃんのめっちゃかわいい音声ファイル一式**
 * (ナビボイスチェンジャーでDLします)

OPPO Reno 10X Zoom (Android 10)
Google Map Ver.10.58.2 で動作確認済です
iPhoneとかでも同じ方法でできると思いますが、動作未確認です

## やりかた

### 1. Android端末を操作し、ナビボイスチェンジャーの「音声のダウンロード」から、「茜ちゃんとドライブ(VOICEROID+琴葉茜)」をダウンロードします

Playストアから予め「ナビボイスチェンジャー」をダウンロードしてくださいね

![6145.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130352/a6dbd202-ce8e-4a20-6abf-fe2a670c1409.jpeg)


### 2. ナビボイスチェンジャーの「音声のインストール」から、「茜ちゃんとドライブ(VOICEROID+琴葉茜)」をインストールします

![6144.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130352/8cbbf399-d31e-1f37-72f2-e0fa99fcc2d2.jpeg)


インストールしたところで、現時点ではフォーマットが合わないので使えませんが、音声差し替え先のフォルダを作るために行います

「音声のインストール」は、`Android\data\jp.nekoteki.android.navivoicechanger\files\voicedata\{id}`にある`voice_instructions.zip`というファイルを
`Android\data\com.google.android.apps.maps\testdata\voice\ja_JP{英数字}`にコピーするということをしてるんだと思います。しらんけど。

### 3. データ転送ケーブルでAndroid端末とPCをつなぎ、`voice_instructions.zip` をPCに転送します

![無題1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130352/d1cb7426-a9f8-3969-fa39-ddd0bfd125f9.png)

音声ファイルは以下のフォルダにあります

```
Android\data\jp.nekoteki.android.navivoicechanger\files\voicedata\{id}
↓
※「茜ちゃんとドライブ(VOICEROID+琴葉茜)」の場合、以下の場所にあります
Android\data\jp.nekoteki.android.navivoicechanger\files\voicedata\104
```

デスクトップとか、自分のわかるところならどこに置いてもいいです

### 4. PCで `voice_instructions.zip` を解凍します

WinRARとかLhaplusとか、お好みのソフトで解凍してください

### 5. 解凍した「voice_instructions」フォルダの中に `bulk_rename.bat` と `bulk_raname.csv` を置きます

`bulk_rename.bat` と `bulk_rename.csv` のダウンロードは以下のURLからどうぞ

https://drive.google.com/drive/folders/196dOnZMD856EQwxEBrsHMPSlu0rOPt5_

### 6. 「bulk_rename.bat」をダブルクリックして実行します

![無題2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130352/e9aa2b84-1fac-47c5-81ed-7eb71a4dd157.png)

### 7. 「voice_instructions」フォルダ内にできた「outputs」フォルダの中に、 `messages.xml` と `messages.plist` を置きます

![無題3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130352/0bcdd8bc-f376-523b-ecb3-aadea4f998ed.png)

`messages.xml` と `messages.plist` のダウンロードは以下のURLからどうぞ

https://drive.google.com/drive/folders/196dOnZMD856EQwxEBrsHMPSlu0rOPt5_

`messages.xml` はAndroid用、 `messages.plist` はiOS用だと思います。
私はiOS搭載端末を持っていないのでiPhoneとかで動作確認はしてません。

### 8. 「outputs」フォルダの中身を `voice_instructions_unitless.zip` という名前で圧縮します

「outputs」フォルダは含みません。
フォルダー内にあるファイルだけを `全て選択→右クリック→送る→圧縮(zip形式)フォルダー` とかで圧縮すればおｋ

WinRARとかLhaplusとか、お好みのソフトで圧縮してください

### 9. データ転送ケーブルで、PCからAndroid端末に `voice_instructions_unitless.zip` を転送します

![無題4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130352/d7f0987d-a3e2-fc8f-1968-a828ba15a23b.png)

以下のフォルダに置きます

```
PC\{端末名}\内部共有ストレージ\Android\data\com.google.android.apps.maps\testdata\voice\ja_JP{英数字}
↓
※私の場合
PC\OPPO Reno 10x Zoom\内部共有ストレージ\Android\data\com.google.android.apps.maps\testdata\voice\ja_JP6adc1df
```

もし、最初から `voice_instructions_unitless.zip` が置いてある場合は、上書きするか、心配なら別名にしてください

`voice_instructions.zip` が旧バージョンのファイルで、`voice_instructions_imperial.zip` が mp3形式のファイルだと思います。
多分どちらもいらないと思うけどよくわかんない😅

### 10. Android端末を操作し、「Googleマップ」アプリでナビ案内を開始します

**？？？「さあお客様！　感動する準備をお願いします！」** 

![6146.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130352/01bdbfe3-7b05-3cf7-2882-e71992ae90dd.jpeg)

## 以上

**ｱｶﾈﾁｬﾝｶﾜｲｲﾔｯﾀｰ:relaxed:**

## 何をしてるの？

私が今回したのは、ナビボイスチェンジャーにある古い形式の音声データとフォーマットを、
新マップでも使えるように一括でファイル名を変換するって部分です

サイトがサイトなのでプログラマーっぽいことも書きます

`bulk_rename.bat` の内容はこんな風になってます

```:bulk_rename.bat
mkdir outputs
for /F "tokens=1,2 delims=," %%a in (bulk_rename.csv) do COPY %%a outputs\%%b
pause
```

バッチファイルと同階層に `outputs` フォルダを作成、
`bulk_rename.csv` に従い、新ファイル名に置換したものをフォルダ内にコピー出力します。

## 音声ファイル置換対応表

`bulk_rename.csv` のファイル名置換対応表です。
バッチファイルを実行した時、旧ファイル名と同名のファイルを新ファイル名に置換します
「合流アリ」に対応する新ファイル名はわからなかったので「---」にしています。
誰かわかったら教えて

| 旧ファイル名 | 新ファイル名 | 内容 |
|:--|:--|:--|
| 1.ogg | HEAD_NORTH.ogg | 北へ |
| 2.ogg | HEAD_NORTHEAST.ogg | 北東へ |
| 3.ogg | HEAD_EAST.ogg | 東へ |
| 4.ogg | HEAD_SOUTHEAST.ogg | 南東へ |
| 5.ogg | HEAD_SOUTH.ogg | 南へ |
| 6.ogg | HEAD_SOUTHWEST.ogg | 南西へ |
| 7.ogg | HEAD_WEST.ogg | 西へ |
| 8.ogg | HEAD_NORTHWEST.ogg | 北西へ |
| 9.ogg | SLIGHT_LEFT.ogg | ナナメ左へ |
| 10.ogg | SLIGHT_RIGHT.ogg | ナナメ右へ |
| 11.ogg | TURN_LEFT.ogg | 左へ |
| 12.ogg | TURN_RIGHT.ogg | 右へ |
| 13.ogg | SHARP_LEFT.ogg | おおきく左へ |
| 14.ogg | SHARP_RIGHT.ogg | おおきく右へ |
| 15.ogg | SLIGHT_LEFT_ONTO_THE_RAMP.ogg | ナナメ左方向 その先 高速入口 |
| 16.ogg | SLIGHT_RIGHT_ONTO_RAMP.ogg | ナナメ右方向 その先 高速入口 |
| 17.ogg | TURN_LEFT_ONTO_RAMP.ogg | 左方向 その先 高速入口 |
| 18.ogg | TURN_RIGHT_ONTO_THE_RAMP.ogg | 右方向 その先 高速入口 |
| 19.ogg | TAKE_THE_RAMP.ogg | 高速入口 |
| 20.ogg | TAKE_THE_EXIT_ON_THE_LEFT.ogg | 左方向 その先 高速出口 |
| 21.ogg | TAKE_THE_EXIT_ON_THE_RIGHT.ogg | 右方向 その先 高速出口 |
| 22.ogg | TAKE_THE_EXIT.ogg | 高速出口 |
| 23.ogg | KEEP_LEFT_AT_THE_FORK.ogg | 分岐を左方向へ |
| 24.ogg | KEEP_RIGHT_AT_THE_FORK.ogg | 分岐を右方向へ |
| 25.ogg | CONTINUE_ON_THE_RAMP.ogg | 分岐アリ |
| 26.ogg | ENTER_THE_ROUNDABOUT.ogg | ロータリー 入口 |
| 27.ogg | ROUNDABOUT_1ST_EXIT.ogg | ロータリー １番目の出口へ |
| 28.ogg | ROUNDABOUT_TAKE_2ND_EXIT.ogg | ロータリー ２番目の出口へ |
| 29.ogg | ROUNDABOUT_TAKE_3RD_EXIT.ogg | ロータリー ３番目の出口へ |
| 30.ogg | ROUNDABOUT_TAKE_4TH_EXIT.ogg | ロータリー ４番目の出口へ |
| 31.ogg | ROUNDABOUT_TAKE_5TH_EXIT.ogg | ロータリー ５番目の出口へ |
| 32.ogg | ROUNDABOUT_EXIT_INTO_THE_RAMP.ogg | ロータリー から ランプ(高速)へ |
| 33.ogg | EXIT_THE_ROUNDABOUT.ogg | ロータリー 出口(直進) |
| 34.ogg | CONTINUE_STRAIGHT.ogg | 直進 |
| 35.ogg | TAKE_THE_FERRY.ogg | フェリーに乗れ |
| 36.ogg | TAKE_THE_TRAIN.ogg | 電車に乗れ |
| 37.ogg | MAKE_A_UTURN.ogg | Uターンしろ |
| 38.ogg | TAKE_THE_INTERCHANGE_ON_THE_LEFT.ogg | 左方向 JCT(分岐をナナメ左方向) |
| 39.ogg | TAKE_THE_INTERCHANGE_ON_THE_RIGHT.ogg | 右方向 JCT(分岐をナナメ右方向) |
| 40.ogg | TAKE_THE_INTERCHANGE.ogg | JCT |
| 41.ogg | ---.ogg | 合流アリ |
| ARRIVED.ogg | ARRIVED.ogg | 目的地に到着 |
| DATA_LOST.ogg | DATA_LOST.ogg | データ接続が失われました |
| DESTINATION_ON_LEFT.ogg | DESTINATION_ON_LEFT.ogg | 左に目的地アリ |
| DESTINATION_ON_RIGHT.ogg | DESTINATION_ON_RIGHT.ogg | 右に目的地アリ |
| DESTINATION_WILL_BE_ON_LEFT.ogg | DESTINATION_WILL_BE_ON_LEFT.ogg | 目的地は左側 |
| DESTINATION_WILL_BE_ON_RIGHT.ogg | DESTINATION_WILL_BE_ON_RIGHT.ogg | 目的地は右側 |
| GENERIC_CONTINUE.ogg | GENERIC_CONTINUE.ogg | しばらく道なり |
| GPS_LOST.ogg | GPS_LOST.ogg | GPS受信できず |
| in_100_meters.ogg | IN_100_METERS.ogg | およそ100m |
| in_150_meters.ogg | IN_150_METERS.ogg | およそ150m |
| in_1_and_a_half_kilometers.ogg | IN_1_AND_A_HALF_KILOMETERS.ogg | およそ1.5km |
| in_1_kilometer.ogg | IN_1_KILOMETER.ogg | およそ1km |
| in_200_meters.ogg | IN_200_METERS.ogg | およそ200m |
| in_2_kilometers.ogg | IN_2_KILOMETERS.ogg | およそ2km |
| in_300_meters.ogg | IN_300_METERS.ogg | およそ300m |
| in_3_kilometers.ogg | IN_3_KILOMETERS.ogg | およそ3km |
| in_400_meters.ogg | IN_400_METERS.ogg | およそ400m |
| in_500_meters.ogg | IN_500_METERS.ogg | およそ500m |
| in_50_meters.ogg | IN_50_METERS.ogg | およそ50m |
| in_600_meters.ogg | IN_600_METERS.ogg | およそ600m |
| in_800_meters.ogg | IN_800_METERS.ogg | およそ800m |
| NAVIGATION_RESUMED.ogg | NAVIGATION_RESUMED.ogg | 音声案内を継続します |
| PLEASE_DESCRIBE_PROBLEM.ogg | PLEASE_DESCRIBE_PROBLEM.ogg | 問題の内容をお話ください |
| THEN.ogg | THEN.ogg | その先 |
| WILL_ARRIVE.ogg | WILL_ARRIVE.ogg | 目的地周辺 |

## 余談

誰か、ここまでの作業を全部アプリで完結するようなの作ってくれたらいいな～(小声)

2021.01.23 追記

ここまで書いといてなんですが、既にほぼ同じことをしている方がいました...

https://bowlroll.net/file/154696

まあ、SEO的に露出が増えれば役に立つ人も増えると思うんで、何も問題なければこの記事は残すことにします

## おまけ

本記事とは全く関係がないですが、私は車のバックカメラをAndroidアプリで表示しています。
操作方法を説明した動画をあげてるので良ければどうぞ

https://www.youtube.com/watch?v=u8RjvgbJkpk&t=18s