use crate::TranscriptionResult;
use nemo_text_processing::normalize_sentence;
pub fn apply_itn(result: &mut TranscriptionResult) {
result.text = normalize_sentence(&result.text);
if let Some(segments) = &mut result.segments {
for segment in segments.iter_mut() {
segment.text = normalize_sentence(&segment.text);
}
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::TranscriptionSegment;
#[test]
fn test_apply_itn_normalizes_text_and_segments() {
let mut result = TranscriptionResult {
text: "twenty three dollars".to_string(),
segments: Some(vec![
TranscriptionSegment {
start: 0.0,
end: 1.0,
text: "twenty three dollars".to_string(),
},
TranscriptionSegment {
start: 1.0,
end: 2.0,
text: "one hundred fifty two".to_string(),
},
]),
};
apply_itn(&mut result);
assert_eq!(result.text, "$23");
let segments = result.segments.unwrap();
assert_eq!(segments[0].text, "$23");
assert_eq!(segments[1].text, "152");
}
#[test]
fn test_apply_itn_no_segments() {
let mut result = TranscriptionResult {
text: "twenty three dollars".to_string(),
segments: None,
};
apply_itn(&mut result);
assert_eq!(result.text, "$23");
assert!(result.segments.is_none());
}
}