Class VoiceResult#

Class Documentation#

class VoiceResult#

Parses a “<name>.voice.json” written by analysis/run_voice.py — the spectrogram, pitch track and intensity contour drawn beneath the waveform on the Speaker Diarization page.

QtCore-only on purpose. The PNG is located but never loaded here, so this stays free of QtGui and can be compiled into mosaic_tests, which links only Qt6::Core and Qt6::Network. Everything that decides how the image is interpreted therefore has test coverage; only the drawing does not.

Public Functions

VoiceResult() = default#
inline bool is_valid() const#
inline const QString &source_audio() const#
inline double duration_ms() const#
inline const VoiceSpectrogramMeta &spectrogram() const#
inline const VoiceTrack &pitch() const#

Hz per frame; 0 means unvoiced, which is a value and not an absence — the widget must break its line there rather than interpolate across it.

inline double pitch_floor_hz() const#
inline double pitch_ceiling_hz() const#
inline const VoiceTrack &intensity() const#

Public Static Functions

static VoiceResult load(const QString &jsonPath)#

Returns a default-constructed (is_valid() == false) result if the file is missing, malformed, or declares a schema this build cannot read.