---
# System prepended metadata

title: KC3Hack2024 OUCCチーム

---

# KC3Hack2024 OUCCチーム

# 2/18 第2回開発会議


# 2/17 第1回開発会議
## オブジェクトの型
ScriptTextModel (Style Bert-Vitsに送るデータ)
- ScriptLine[]

ScriptLine
- Text : string
- Character : string
- Style : string
- SpeakingModel : string

Characters (キャラクター名から音声モデルへのマッピング)
- Mapping : Dictionary<string,string>

RawTextModel (GPT4に送るデータ)
- RawText : string

こんな感じ？
```csharp
using System;

namespace Namespace
{
    public class Characters
    {
        //  ReactivePropertyのDictionary
        // Key: Character, Value: SpeakingModel
        public Dictionary<string,string> Mapping {get;}
    }
    
    public class ScriptLine:INotifryPropertyChanged
    {
        [ReactiveProperty] // MVVM toolkit
        private string _text;
        public string Text { get; set; }
        
        public string Character {get; set;}
        public string Style { get; set; }
        
        // 拡張メソッド
        public string SpeakingModel => Characters.Mapping[Character];
    }

    public class ScriptTextModel
    {
        public ScriptLine[] ScriptLines { get; set; }
    }

    public class RawTextModel
    {
        public string RawText { get; set; }
    }
}
```

---
**以下アイデアソン期間**

# 2/11 第1回
## テーマ：関西をええ感じに
![image](https://hackmd.io/_uploads/rJME5Q8jp.png)
![image](https://hackmd.io/_uploads/rJn457Ls6.png)

## 案出し
### 自分の身の回りの「不便 or 伸びしろ」
- 部屋が片付けられない！
- 換気扇自動で切れてほしい
- 乗ってる電車の到着時刻を知りたい
- (バス運行状況)

### つくりたいもの
- GitHub通知アプリ(Windows) Jasperみたいな
- 本の読み上げ。GPT4で話者特定、StyleBertVitsで音声読み上げ。
- https://ecsosaka-my.sharepoint.com/:p:/g/personal/u537882g_ecs_osaka-u_ac_jp/Edc_OEZsQZZGlhbQWO7vqREB2wVBLGMFRMOSN8UhjmMRvA?e=tWecqF

## 本の読み上げアプリ
### なんの不便に役立つか
- 目が見えない人であったり、満員電車や運転中・歩いている途中など手が使えない状況だと本を読むことができない
- 通常の合成音声だと感情がうまく表現できていないため、作品の中に入り込めない

### どのようにそれらを解決し、向上できるか
- 上記の逆

### 何ができるか
- テキストファイル、青空文庫のURLを入力すると、本の読み上げ音声が作成される（10分ほどかかる)
- 音声ライブラリから再生したい本の読み上げ音声を聞くことができる。
- 出力結果 音声付きEPub (できたら)

### 実装構成
- フロントエンド
    - スマホアプリ
    - Windows
    - MAUI (無印)
- テキストto音声 別ライブラリ
- バックエンド
    - C#との相性を考えAzure
    - ASP.&#8205;NET
        - REST API JSON
        - grpc バイナリ

## 決定事項
- 本の読み上げアプリ
- 関西のテーマに沿って、関西弁の含まれる小説や、関西弁が達者な音声合成モデルを作成

## 勉強事項
- MAUIの書き方
- [StyleBertVits2](https://github.com/litagin02/Style-Bert-VITS2)
    - APIサーバー立てる (Azure別インスタンス立てればいい)
- [MagicOnion]

## スケジュール
2/11 ~ 
- スケジュール詰める・MAUIの学習
- FigmaでUI作成
- Azureの学習、Azure Function/VMなどを立てる練習
- 発表スライド作成 
    - チーム名を決める

2/17 : 対面アイデア発表

## 次回
2/12 20:30 ~ : スケジュール詰め、MAUIの学習

# 2/12 第2回
## 各自やってきたこと
- 西田：[MAUIチュートリアル](https://learn.microsoft.com/ja-jp/dotnet/maui/tutorials/notes-app/?view=net-maui-8.0)
- 宮嶋：style-bert-vits 環境構築

# 2/13 第3回
## メモ
- moespeechのライセンス上、声優の声をそのまま使用することはできない
    - 同じようなジャンル？の声をマージして使用するなどをすることになる
    - ジャンルを決める必要がある
- StyleBertVits2は1つの声の学習に自分の環境(Laptop4060)で約30分ほどあれば十分学習できる
    - なので音声モデルを作れる数は限られている。
    - 50モデルが限界？
    - 1ジャンル5人ぐらいの声とすると10ジャンル？
    - マージはかなりきれいに行えそうでした。
- ナレーションスタイルを用意したい
    - ナレーションしている音声が必要
    - 下の音声がよさそう。
    - 案:スタイル0, 他1のようにして合成する
## 機能設計
- テキスト =(GPT)=> 下のようなテキストにする =(Style-Bert Vits)=> 音声
- キャラクターごとの声の指定 (後から変更可)
- 青空文庫 html, epub =(ruby変換,形態素解析,置換)=> テキスト
- epub 出力 (音声)
- WinUI
- 読み上げの修正
    - キャラクター、スタイル、読み上げ文が間違っていた場合修正できるようにする
    - GPT4からのStyleBertVits2に送る前のクエリリストをユーザーが変更できるUI

## スケジュール、役割分担
- UI
    - タブ１ 
        - 実行中タスク一覧の表示 (編集へ飛べる)
            - 文章取り込み
            - GPT4解析
            - 音声合成
        - 文章取り込み・GPT4による解析(API料金の注意書きが必要)
    - タブ２
        - 編集
            - GPT4解析後の文章の編集
            - 音声合成モデルの選択
        - 実行状況に応じて表示内容を変化させる
    - 設定
        - APIキー
        - バージョン表示(テンプレートに従うとよさそう)
- html/epubからのテキスト変換
    - 青空文庫HTMLを平文にする
        - 形態素解析してルビ置換する
    - EPubへの出力
        - 必要最低限の情報だけ乗せる
            - 作品名、作者、翻訳者
        - 音声とテキストを結びつけて出力する
- GPT4によるキャラクター、スタイル解析
    - 15文ほど読んだら、要約文、キャラクター情報を更新する
    - 前半10文をキャプションする
    - 「謎の男」＝「高橋」
    - ![](https://media.discordapp.net/attachments/1204261700350648340/1204285674207973386/image.png?ex=65dd67ef&is=65caf2ef&hm=fb7ef10005df56fd4dfe8b60459184a91d000e673d9b47e5e6d1fa25a894c75e&=&format=webp&quality=lossless&width=1368&height=618)
- StyleBertVits2のモデル作成
    - 各声優ごとの音声モデル作成
    - あるキャラクターにない感情スタイルを、別キャラクターのモデルからマージできるか検証(今週中)
    - ジャンル分け
        - https://docs.google.com/spreadsheets/d/15xyvX-IICnza41Om9WhNCTP6su2uLwZiWTcdOF3TC28/edit?usp=sharing

## GPT4が返すであろう返答
```
[マチルド:natural]「新婦アンヌ様がご入場なさいます」

[アンヌ:narration]ホールの大きなドアが左右に開かれ、真っ白なウエディングドレスに身を包んだ女性が、颯爽と歩いて入っていらっしゃいました。

[アンヌ:narration]そのドレスは恐ろしいほど贅沢に布を使っています。ドレープとプリーツを上手く組み合わせて豪華さを演出したデザインのようです。

[アンヌ:narration]お父様は、お母様と違って派手な方がお好きなのでしょう……。


[アンヌ:surprised]「……な！　……マ、マチルド。どうして――」


[アンヌ:narration]呆然としたお顔のお父様が、それだけしか言えずに立ち尽くしていらっしゃいます。

[アンヌ:narration]あら？　マチルド様？　新婦はアンヌ様とおっしゃったように思うのですが……？
```

## ナレーションぽい音声ID
- [0c109d26](https://drive.google.com/drive/folders/1AQJahYamgkwd6aqgkYuEUIq-IebTItIV?usp=drive_link)
- 

## オブジェクトの型

ScriptTextEntity (Style Bert-Vitsに送るデータ)
- ScriptLine[]

ScriptLine
- 読み上げテキスト
- モデル
- スタイル

RawTextEntity
- 


## スライド構成
- 表紙？
    - チーム名(無し(チームH)でもいい気はする)
    - 雑タイトル (本AI読み上げソフト)
- 目的
    - どんな本でも高クオリティの音声で聞けるようにする<BR>(高クオリティ:話者やアクセントがしっかりと選択されている)
    - 家事や運転中でもラジオ感覚で聞ける
    - 視覚障害者がどんな本でも読めるようになる
- アプローチ
    - LLM(大規模言語モデル)で話者や感情を推定する
    - それを元に最新の音声合成モデルで読み上げ音声を生成する
- 従来の読み上げソフトと違う点
    - 発言ごとに適切な話者・感情を選択する
    - これによりドラマCDのようなものを自動生成できる
- 関西をええかんじに
    - 関西人はせっかちなので移動しながら本が「読めて」うれしい！！！！！！！！！
    - 関西弁読み上げに対応（予定）