Package-level declarations

Types

Link copied to clipboard

WAV 音声を再生する Android 向け実装。

Link copied to clipboard

WAV 音声を再生する Jvm 向け実装。

Link copied to clipboard
class NarratorEngine<EVENT, START_TYPE, KEY>(soundPlayer: SoundPlayer, resources: WavResources<START_TYPE>, eventToKey: (EVENT) -> KEY, defaultStartSoundType: START_TYPE, volumeFlow: ERROR CLASS: Symbol not found for Flow<kotlin/Int> = flowOf(100), startSoundTypeFlow: ERROR CLASS: Symbol not found for Flow<START_TYPE> = flowOf(defaultStartSoundType), startSoundEnabledStatesFlow: ERROR CLASS: Symbol not found for Flow<kotlin/collections/Map<KEY, kotlin/Boolean>> = flowOf(emptyMap()), customSpeak: suspend (EVENT, Int) -> Unit, isCustomSpeakEvent: (EVENT) -> Boolean = { false }, scope: ERROR CLASS: Symbol not found for CoroutineScope = CoroutineScope(Dispatchers.Default + SupervisorJob()))

開始音のWAV再生とカスタム読み上げ(OS標準TTS)を扱うエンジンの共通実装。

Link copied to clipboard
interface SoundPlayer

WAV 音声を再生するプラットフォーム実装の共通インターフェース。

Link copied to clipboard
data class SpeakOutcomes<OUTCOME>(val skipped: OUTCOME, val queued: OUTCOME, val interrupted: OUTCOME, val spoken: OUTCOME)

speakWithOutcome が返す4経路それぞれの結果値。

Link copied to clipboard
data class TelemetryLogJsonCurrentField(val name: String, val json: String)

buildTelemetryLogJson の <x> フィールド1つ分(JSON キー名と、既に JSON 文字列化された値)を表す。 現在値は必ず存在するため、TelemetryLogJsonPreviousField と異なり json は非 null。

Link copied to clipboard
data class TelemetryLogJsonPreviousField(val name: String, val json: String?)

buildTelemetryLogJson の previous<X> フィールド1つ分(JSON キー名と、既に JSON 文字列化された値)を 表す。テレメトリの初回受信時は前回値が存在しないため、json は null を取りうる。

Link copied to clipboard
data class WavResources<START_TYPE>(val startSoundTypeToFile: Map<START_TYPE, String>, val startSoundResourceLoader: suspend (String) -> ByteArray)

NarratorEngine が読み込む開始音のリソース群。開始音タイプ→ファイルパスのマップと、 それを読み込む startSoundResourceLoader をまとめたもの。

Properties

Link copied to clipboard
val TelemetryLogJson: ERROR CLASS: Symbol not found for Json

テレメトリログ用の kotlinx.serialization 共通設定。

val TelemetryLogJsonAllowingSpecialFloatingPoint: ERROR CLASS: Symbol not found for Json

NaN/Infinity を取りうる Float/Double フィールドを含むテレメトリログ用の設定。

Functions

Link copied to clipboard
fun buildTelemetryLogJson(stateJson: String, previous: TelemetryLogJsonPreviousField, current: TelemetryLogJsonCurrentField, settingsJson: String, observedAtMs: Long, finalStateJson: String): String

XxxNarratorEventProcessor がテレメトリログとして保存する JSON オブジェクトを組み立てる共通ヘルパー。

Link copied to clipboard
actual fun captureNarratorError(throwable: Throwable)
expect fun captureNarratorError(throwable: Throwable)

ナレーター機能の非致命的な例外を記録するための共通入口。Android/JVM では Sentry に送信する。

actual fun captureNarratorError(throwable: Throwable)
Link copied to clipboard
actual fun platformSoundModule(qualifier: Qualifier): Module
expect fun platformSoundModule(qualifier: ERROR CLASS: Symbol not found for Qualifier): Module

WAV 音声再生に使う SoundPlayer のプラットフォーム実装を、qualifier 付きでバインドする expect/actual モジュール。呼び出し側(各 narrator feature)は自身を識別する named 修飾子を渡し、 同一 Koin コンテナ内で複数の narrator feature が SoundPlayer を同時に登録しても衝突しないようにする。

actual fun platformSoundModule(qualifier: Qualifier): Module
Link copied to clipboard
inline suspend fun <T> runCatchingNarratorError(block: suspend () -> T): T?

キャンセルは再スローし、それ以外の例外は記録して null を返す。

Link copied to clipboard
suspend fun runCatchingTelemetryLogSave(block: suspend () -> Unit)

ログ保存は読み上げの補助機能のため、保存失敗で以後の読み上げを止めず、例外の記録のみ行う。 キャンセルは再スローする。

Link copied to clipboard
fun <KEY, OUTCOME> speakWithOutcome(eventKey: KEY, currentKey: () -> KEY?, autoReadoutOrder: List<KEY>, queueEnabled: Boolean, speak: (queue: Boolean) -> Unit, stop: () -> Unit, outcomes: SpeakOutcomes<OUTCOME>): OUTCOME

speakWithPriority の4経路を、呼び出し側が指定した OUTCOME の値へ変換する。

Link copied to clipboard
fun <KEY> speakWithPriority(eventKey: KEY, currentKey: () -> KEY?, autoReadoutOrder: List<KEY>, queueEnabled: Boolean, speak: (queue: Boolean) -> Unit, stop: () -> Unit): Boolean

優先度に基づいてイベントを読み上げるかどうかを判定する共通ロジック。

Link copied to clipboard

テレメトリログ JSON の値として埋め込めるよう、文字列を JSON 文字列リテラルへ変換する。

Link copied to clipboard

状態や設定の toString() をエスケープし、raw フィールドを持つテレメトリログ JSON へ変換する。