Skip to content

Commit 586ac69

Browse files
authored
test: engineMockとそのテストだけ実装する (#2377)
1 parent b445592 commit 586ac69

25 files changed

+1746
-7
lines changed

package-lock.json

Lines changed: 26 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
"glob": "11.0.0",
5858
"hotkeys-js": "3.13.6",
5959
"immer": "9.0.21",
60+
"kuromoji": "github:VOICEVOX/kuromoji.js#0.0.1",
6061
"markdown-it": "13.0.2",
6162
"move-file": "3.0.0",
6263
"multistream": "4.1.0",
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
export const convertToWavFileData = (audioBuffer: AudioBuffer) => {
1+
export const convertToWavFileData = (
2+
audioBuffer: Pick<
3+
AudioBuffer,
4+
"sampleRate" | "length" | "numberOfChannels" | "getChannelData"
5+
>,
6+
) => {
27
const bytesPerSample = 4; // Float32
38
const formatCode = 3; // WAVE_FORMAT_IEEE_FLOAT
49

src/mock/engineMock/README.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# エンジンモックのドキュメント
2+
3+
## 概要
4+
5+
通信を介さずに音声合成できるエンジンのモックです。
6+
7+
同じ入力には同じ出力を返し、別の入力には別の出力を返すようになっています。
8+
また出力を見たときにUIや処理の実装の異常に気付けるように、ある程度直感に合う出力を返すよう努力されています。
9+
10+
例:音量を下げると音声が小さくなる、音程と周波数が一致する、など。
11+
12+
モックの実装は気軽に破壊的変更をしても問題ありません。
13+
14+
## ビルド戦略
15+
16+
ブラウザ版でも使えるようにすべく、ソフトウェアにも組み込める形で実装されています。
17+
ビルド時のモックエンジンの取り扱いポリシーはこんな感じです。
18+
19+
- 重い処理が一切実行されないようにする
20+
- 辞書の初期化、画像の読み込みなど
21+
- なるべく重いファイルはビルドに含まれないようにする
22+
- 形態素解析の辞書ファイルやダミー画像など
23+
24+
## ファイル構成
25+
26+
- `talkModelMock.ts`
27+
- トーク用の音声クエリを作るまでの処理周り
28+
- `singModelMock.ts`
29+
- ソング用の音声クエリを作るまでの処理周り
30+
- `audioQueryMock.ts`
31+
- 音声クエリ周り
32+
- `synthesisMock.ts`
33+
- 音声波形の合成周り
34+
- `characterResourceMock.ts`
35+
- キャラ名や画像などのリソース周り
36+
- `phonemeMock.ts`
37+
- 音素周り
38+
- `manifestMock.ts`
39+
- エンジンのマニフェスト周り
40+
41+
## kuromoji.jsについて
42+
43+
本家kuromoji.jsはパス操作周りでエラーが起こるので、フォーク版を使っています。
44+
mock用途以外にkuromoji.jsを使う予定はなく、もし動かなくなった際は依存を外すことも検討します。

0 commit comments

Comments
 (0)