SEDREAMS Glottal Closure Instant Detection
lst_covarep_gci_sedreams.RdDetects glottal closure instants (GCIs) using SEDREAMS algorithm. Returns event times (GCI instants), not a regular frame grid.
Usage
lst_covarep_gci_sedreams(listOfFiles, beginTime = 0, endTime = 0, f0mean = NULL, polarity = NULL, return_jstf = FALSE, verbose = TRUE)Arguments
- listOfFiles
Vector of file paths (WAV, MP3, MP4, etc.) to analyze
- beginTime
Start time in seconds (0 for beginning of file)
- endTime
End time in seconds (0 for end of file)
- f0mean
Estimated mean F0 in Hz. If NULL, auto-estimated from signal.
- polarity
Signal polarity (1 or -1). If NULL, auto-detected.
- verbose
Show progress messages (default: TRUE)
- return_jstf
Logical. Return JsonTrackObj instead of data.frame? Default FALSE. When both toFile and return_jstf are TRUE, the file is written AND the object returned.
Value
Data frame with columns:
file: Input file pathn_gcis: Number of detected GCIsgci_times: List column of numeric vectors (GCI times in seconds)
Details
SEDREAMS Algorithm (Ney and Kneser 2002) :
Compute LPC residual (25ms frames, 5ms shift, order ≈ fs/1000 + 2)
Bandpass filter signal around estimated F0 (mean-based signal)
Find maxima/minima pairs in mean-based signal
Locate GCI positions in LP residual peaks within windows
Typical output:
Voiced speech: 100-200 GCIs per second (F0-dependent)
Unvoiced/silence: 0 GCIs (no glottal closures)
Use cases:
Foundation for GCI-based voice quality (NAQ, QOQ, H1H2 via trk_covarep_vq_gci)
Voice pathology assessment (irregular GCI spacing = vocal pathology)
Glottal source analysis (GCI-anchored inverse filtering)
Speech analysis (pitch period estimation, voicing detection)
Downstream workflow:
lst_covarep_gci_sedreams()— detect GCIstrk_covarep_vq_gci()— compute voice quality per GCIlst_covarep_vq()— summarize to scalars
References
Ney H, Kneser R (2002). “Speech recognition using continuous-space embeddings.” IEEE Signal Processing Magazine, 19(1), 33–42. Signal processing foundations for GCI detection and SEDREAMS algorithm.
Examples
if (FALSE) { # \dontrun{
# Single file
gcis <- lst_covarep_gci_sedreams("speech.wav", f0mean = 100)
# Batch process
files <- c("file1.wav", "file2.wav")
results <- lst_covarep_gci_sedreams(files, f0mean = 110)
# View results
results$gci_times[[1]] # GCI times for first file (in seconds)
# Chain with voice quality analysis
vq <- trk_covarep_vq_gci("speech.wav", gci_times = gcis$gci_times[[1]])
} # }