Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add: speaker/singer に関する語彙を定義 #1262

Open
tarepan opened this issue May 18, 2024 · 6 comments
Open

add: speaker/singer に関する語彙を定義 #1262

tarepan opened this issue May 18, 2024 · 6 comments
Assignees
Labels
機能向上 状態:実装 実装をおこなっている状態

Comments

@tarepan
Copy link
Contributor

tarepan commented May 18, 2024

内容

概要: speaker・singer 等の語彙とその定義が欲しい

MetasStore 関連のリファクタリングの中で、話者周りの命名規則混乱が顕在化しつつある。
この問題は以前から指摘されている(下記参照)。

speaker・singerに関してのメモです。

speakerは、talk系のスタイルを1つでも持つ人のこと
singerは、sing系のスタイルを1つでも持つ人のこと
でも現状(0.16.0)どっちもSpeaker構造体になってるし、speaker_uuid引数で指定する形になってる
speakerとsingerどちらものベースになる概念を作りたいけど、未定
最有力候補はCharacter、だけどNemo(キャラのいないエンジン)のことを考えると微妙かもしれない
Person?Persona?
#1038 (comment)

現在の VOICEVOX ENGINE は talk only 時代のコードがベースにあり、例えば singer 情報をコアから取ってくる際のモデル名は CoreSpeaker になっている。
リファクタリングの結果、Speaker/speaker/singer といった語彙が単一ファイル内で登場するようになっており、新規コントリビュータはかなり混乱すると予想される。
機能ではなくコーディングスタイルの問題ではあり優先度が低いまま来ているが、コストをかけて語彙整理する段階にあると考える。

このような背景から、speaker・singer 等の語彙とその定義に関する議論を希望します。

Pros 良くなる点

  • 見通し改善
  • 命名コスト低減

Cons 悪くなる点

無し(考えるコストそれなり)

実現方法

  • 現状での変数名・クラス名を列挙
  • 概念の数を整理
  • 名称議論
  • リネーム

VOICEVOXのバージョン

0.19.0

@tarepan tarepan changed the title add: speaker・singer に関する語彙 add: speaker/singer に関する語彙 May 18, 2024
@tarepan tarepan changed the title add: speaker/singer に関する語彙 add: speaker/singer に関する語彙を定義 May 18, 2024
@tarepan tarepan added 要議論 実行する前に議論が必要そうなもの 状態:必要性議論 必要性を議論している状態 labels May 18, 2024
@Hiroshiba
Copy link
Member

Hiroshiba commented May 23, 2024

少なくともtalk系統の場所ではspeaker、sing系統の場所ではsingerで良い気がしました!
まあ現API内でたぶんこの2つ分けないといけない場所でspeaker/singerが現れることはないかもですが。
(Voice=Styleを指定する形式なので)

speaker/singerをまとめた概念は・・・めちゃくちゃ考えたのですが適切なのは無いですね!!
一番良さそうなのがPerformerなのですが、わかりづらい。
あとはVoiceActorですが、声優がVoiceActressなので混同しそう。Actorでも良いけどこれもわかりづらい。

いろいろ巡ってたぶんcharacterかpersonしかなく、どっちか適用したらどっちかが難しくなりそうです。
まあでももうどっちかに倒すしかなく、iconや立ち絵があることを前提にしていること、ミッション文に「音声合成キャラクター」が現れることから、フィクション寄りのCharacterに倒すのが良い気がしました!

他の候補にPersonaがありますが、ドキュメントで案内するとき「ペルソナ」と書いても伝わらないので、characterのが良いかなおと。
英語圏ではハリー・ポッターなど、人が演じるフィクション的な人格もキャラクターと呼ぶっぽいし、キャラクターで良い気がしました!

@tarepan
Copy link
Contributor Author

tarepan commented May 23, 2024

Characterに倒すのが良い

👍️
どれにも合理的な一長一短があるので、メンテナ判断でえいやと決めるのが妥当と考えます。

結論として、以下の概念構造になった、で認識正しいでしょうか?

  • character: 声を出している存在
    • speaker: 話し声を出している存在
    • singer: 歌声を出している存在

@tarepan
Copy link
Contributor Author

tarepan commented May 23, 2024

(結論確認をしといてアレなんですが、アイデアが浮かんだのでご相談です)

話者 speaker について、talker という名称は議題に挙がったことあるでしょうか?
上記概念構造で仮リファクタリングしてみたところ、変更不可の API 用 BaseModel 名に Speaker があり「これ意味合いとしては character なんだよな。しょうがないけど混同しやすいな」と思いました。そこで talker にすると案外収まりが良かったのでどうかなと。
すなわち概念構造を

  • character: 声を出している存在
    • talker: 話し声を出している存在
    • singer: 歌声を出している存在

とするというアイデアです。
こうすると

  • sing 系が singer、talk 系が talker
  • speakerSpeaker, speaker_uuid)は character の古いエイリアス扱い
    • 変更不可の API に character の意味合いで登場
    • 内部では talker に役割を引き継いで不使用

といった具合になり、曖昧な語句を ENGINE 内部から消せます。
ご意見伺えれば幸いです。

@Hiroshiba
Copy link
Member

talker良いと思います!!
talk singと合うので合理的そうです。

character・talker・singerの意味と関係、認識合ってます!

…もしかしたらtalker/singerが出てくることはほぼないかも…?
今まではsing系で人を指定するとこにspeakerを指定するのが変でしたが、characterを指定するのは変じゃないかもとか思いました!

@tarepan tarepan added 状態:実装 実装をおこなっている状態 and removed 要議論 実行する前に議論が必要そうなもの 状態:必要性議論 必要性を議論している状態 labels May 23, 2024
@tarepan tarepan self-assigned this May 23, 2024
@Hiroshiba
Copy link
Member

あ! ドキュメント等で案内できる和名を決めてなかったです 🙇
#1263 を見て気づきました 🙇 )

今までの流れを踏襲してSpeaker: 話者が丸そう・・・?

speaker→話者
singer→歌手
character→キャラクター

とかどうでしょうか。

@tarepan
Copy link
Contributor Author

tarepan commented May 27, 2024

和名を決めてなかった

👍️
抜けていました、指摘ありがとうございます。

speakertalker の変更を加味すると、以下の形になる感じですかね?

  • character / キャラクター : 声を出している存在
    • talker / 話者 : 話し声を出している存在
    • singer / 歌手 : 歌声を出している存在

追記: ひとまずこれで #1263 を修正してみました。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
機能向上 状態:実装 実装をおこなっている状態
Projects
None yet
Development

No branches or pull requests

2 participants