@@ -4,17 +4,22 @@ import Speech
44// and so they aren't super testable out the box. We define struct versions of those types to make
55// them easier to use and test.
66
7+ struct SpeechRecognitionMetadata : Equatable {
8+ var averagePauseDuration : TimeInterval
9+ var speakingRate : Double
10+ var voiceAnalytics : VoiceAnalytics ?
11+ }
12+
713struct SpeechRecognitionResult : Equatable {
814 var bestTranscription : Transcription
9- var transcriptions : [ Transcription ]
1015 var isFinal : Bool
16+ var speechRecognitionMetadata : SpeechRecognitionMetadata ?
17+ var transcriptions : [ Transcription ]
1118}
1219
1320struct Transcription : Equatable {
14- var averagePauseDuration : TimeInterval
1521 var formattedString : String
1622 var segments : [ TranscriptionSegment ]
17- var speakingRate : Double
1823}
1924
2025struct TranscriptionSegment : Equatable {
@@ -24,7 +29,6 @@ struct TranscriptionSegment: Equatable {
2429 var substring : String
2530 var substringRange : NSRange
2631 var timestamp : TimeInterval
27- var voiceAnalytics : VoiceAnalytics ?
2832}
2933
3034struct VoiceAnalytics : Equatable {
@@ -39,20 +43,28 @@ struct AcousticFeature: Equatable {
3943 var frameDuration : TimeInterval
4044}
4145
46+ extension SpeechRecognitionMetadata {
47+ init ( _ speechRecognitionMetadata: SFSpeechRecognitionMetadata ) {
48+ self . averagePauseDuration = speechRecognitionMetadata. averagePauseDuration
49+ self . speakingRate = speechRecognitionMetadata. speakingRate
50+ self . voiceAnalytics = speechRecognitionMetadata. voiceAnalytics. map ( VoiceAnalytics . init)
51+ }
52+ }
53+
4254extension SpeechRecognitionResult {
4355 init ( _ speechRecognitionResult: SFSpeechRecognitionResult ) {
4456 self . bestTranscription = Transcription ( speechRecognitionResult. bestTranscription)
45- self . transcriptions = speechRecognitionResult. transcriptions. map ( Transcription . init)
4657 self . isFinal = speechRecognitionResult. isFinal
58+ self . speechRecognitionMetadata = speechRecognitionResult. speechRecognitionMetadata
59+ . map ( SpeechRecognitionMetadata . init)
60+ self . transcriptions = speechRecognitionResult. transcriptions. map ( Transcription . init)
4761 }
4862}
4963
5064extension Transcription {
5165 init ( _ transcription: SFTranscription ) {
52- self . averagePauseDuration = transcription. averagePauseDuration
5366 self . formattedString = transcription. formattedString
5467 self . segments = transcription. segments. map ( TranscriptionSegment . init)
55- self . speakingRate = transcription. speakingRate
5668 }
5769}
5870
@@ -64,7 +76,6 @@ extension TranscriptionSegment {
6476 self . substring = transcriptionSegment. substring
6577 self . substringRange = transcriptionSegment. substringRange
6678 self . timestamp = transcriptionSegment. timestamp
67- self . voiceAnalytics = transcriptionSegment. voiceAnalytics. map ( VoiceAnalytics . init)
6879 }
6980}
7081
0 commit comments