@@ -4,17 +4,22 @@ import Speech
4
4
// and so they aren't super testable out the box. We define struct versions of those types to make
5
5
// them easier to use and test.
6
6
7
+ struct SpeechRecognitionMetadata : Equatable {
8
+ var averagePauseDuration : TimeInterval
9
+ var speakingRate : Double
10
+ var voiceAnalytics : VoiceAnalytics ?
11
+ }
12
+
7
13
struct SpeechRecognitionResult : Equatable {
8
14
var bestTranscription : Transcription
9
- var transcriptions : [ Transcription ]
10
15
var isFinal : Bool
16
+ var speechRecognitionMetadata : SpeechRecognitionMetadata ?
17
+ var transcriptions : [ Transcription ]
11
18
}
12
19
13
20
struct Transcription : Equatable {
14
- var averagePauseDuration : TimeInterval
15
21
var formattedString : String
16
22
var segments : [ TranscriptionSegment ]
17
- var speakingRate : Double
18
23
}
19
24
20
25
struct TranscriptionSegment : Equatable {
@@ -24,7 +29,6 @@ struct TranscriptionSegment: Equatable {
24
29
var substring : String
25
30
var substringRange : NSRange
26
31
var timestamp : TimeInterval
27
- var voiceAnalytics : VoiceAnalytics ?
28
32
}
29
33
30
34
struct VoiceAnalytics : Equatable {
@@ -39,20 +43,28 @@ struct AcousticFeature: Equatable {
39
43
var frameDuration : TimeInterval
40
44
}
41
45
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
+
42
54
extension SpeechRecognitionResult {
43
55
init ( _ speechRecognitionResult: SFSpeechRecognitionResult ) {
44
56
self . bestTranscription = Transcription ( speechRecognitionResult. bestTranscription)
45
- self . transcriptions = speechRecognitionResult. transcriptions. map ( Transcription . init)
46
57
self . isFinal = speechRecognitionResult. isFinal
58
+ self . speechRecognitionMetadata = speechRecognitionResult. speechRecognitionMetadata
59
+ . map ( SpeechRecognitionMetadata . init)
60
+ self . transcriptions = speechRecognitionResult. transcriptions. map ( Transcription . init)
47
61
}
48
62
}
49
63
50
64
extension Transcription {
51
65
init ( _ transcription: SFTranscription ) {
52
- self . averagePauseDuration = transcription. averagePauseDuration
53
66
self . formattedString = transcription. formattedString
54
67
self . segments = transcription. segments. map ( TranscriptionSegment . init)
55
- self . speakingRate = transcription. speakingRate
56
68
}
57
69
}
58
70
@@ -64,7 +76,6 @@ extension TranscriptionSegment {
64
76
self . substring = transcriptionSegment. substring
65
77
self . substringRange = transcriptionSegment. substringRange
66
78
self . timestamp = transcriptionSegment. timestamp
67
- self . voiceAnalytics = transcriptionSegment. voiceAnalytics. map ( VoiceAnalytics . init)
68
79
}
69
80
}
70
81
0 commit comments