@@ -40,6 +40,7 @@ public class Whisper {
40
40
self . unmanagedSelf = unmanagedSelf
41
41
params. new_segment_callback_user_data = unmanagedSelf. toOpaque ( )
42
42
params. encoder_begin_callback_user_data = unmanagedSelf. toOpaque ( )
43
+ params. progress_callback_user_data = unmanagedSelf. toOpaque ( )
43
44
44
45
// swiftlint:disable line_length
45
46
params. new_segment_callback = { ( ctx: OpaquePointer ? , _: OpaquePointer ? , newSegmentCount: Int32 , userData: UnsafeMutableRawPointer ? ) in
@@ -66,17 +67,6 @@ public class Whisper {
66
67
) )
67
68
}
68
69
69
- if let frameCount = whisper. frameCount,
70
- let lastSegmentTime = newSegments. last? . endTime {
71
-
72
- let fileLength = Double ( frameCount * 1000 ) / Double( WHISPER_SAMPLE_RATE)
73
- let progress = Double ( lastSegmentTime) / Double( fileLength)
74
-
75
- DispatchQueue . main. async {
76
- delegate. whisper ( whisper, didUpdateProgress: progress)
77
- }
78
- }
79
-
80
70
DispatchQueue . main. async {
81
71
delegate. whisper ( whisper, didProcessNewSegments: newSegments, atIndex: Int ( startIndex) )
82
72
}
@@ -92,6 +82,15 @@ public class Whisper {
92
82
93
83
return true
94
84
}
85
+
86
+ params. progress_callback = { ( _: OpaquePointer ? , _: OpaquePointer ? , progress: Int32 , userData: UnsafeMutableRawPointer ? ) in
87
+ guard let userData else { return }
88
+ let whisper = Unmanaged < Whisper > . fromOpaque ( userData) . takeUnretainedValue ( )
89
+
90
+ DispatchQueue . main. async {
91
+ whisper. delegate? . whisper ( whisper, didUpdateProgress: Double ( progress) / 100 )
92
+ }
93
+ }
95
94
}
96
95
97
96
private func cleanupCallbacks( ) {
0 commit comments