| | // |
| | // whisper-decoder-impl.m |
| | // |
| | // This file was automatically generated and should not be edited. |
| | // |
| |
|
| | #if !__has_feature(objc_arc) |
| | #error This file must be compiled with automatic reference counting enabled (-fobjc-arc) |
| | #endif |
| |
|
| | #import "whisper-compat.h" |
| | #import "whisper-decoder-impl.h" |
| |
|
| | @implementation whisper_decoder_implInput |
| |
|
| | - (instancetype)initWithToken_data:(MLMultiArray *)token_data audio_data:(MLMultiArray *)audio_data { |
| | self = [super init]; |
| | if (self) { |
| | _token_data = token_data; |
| | _audio_data = audio_data; |
| | } |
| | return self; |
| | } |
| |
|
| | - (NSSet<NSString *> *)featureNames { |
| | return [NSSet setWithArray:@[@"token_data", @"audio_data"]]; |
| | } |
| |
|
| | - (nullable MLFeatureValue *)featureValueForName:(NSString *)featureName { |
| | if ([featureName isEqualToString:@"token_data"]) { |
| | return [MLFeatureValue featureValueWithMultiArray:self.token_data]; |
| | } |
| | if ([featureName isEqualToString:@"audio_data"]) { |
| | return [MLFeatureValue featureValueWithMultiArray:self.audio_data]; |
| | } |
| | return nil; |
| | } |
| |
|
| | @end |
| |
|
| | @implementation whisper_decoder_implOutput |
| |
|
| | - (instancetype)initWithCast_76:(MLMultiArray *)cast_76 { |
| | self = [super init]; |
| | if (self) { |
| | _cast_76 = cast_76; |
| | } |
| | return self; |
| | } |
| |
|
| | - (NSSet<NSString *> *)featureNames { |
| | return [NSSet setWithArray:@[@"cast_76"]]; |
| | } |
| |
|
| | - (nullable MLFeatureValue *)featureValueForName:(NSString *)featureName { |
| | if ([featureName isEqualToString:@"cast_76"]) { |
| | return [MLFeatureValue featureValueWithMultiArray:self.cast_76]; |
| | } |
| | return nil; |
| | } |
| |
|
| | @end |
| |
|
| | @implementation whisper_decoder_impl |
| |
|
| |
|
| | |
| | |
| | |
| | + (nullable NSURL *)URLOfModelInThisBundle { |
| | NSString *assetPath = [[NSBundle bundleForClass:[self class]] pathForResource:@"whisper_decoder_impl" ofType:@"mlmodelc"]; |
| | if (nil == assetPath) { os_log_error(OS_LOG_DEFAULT, "Could not load whisper-decoder-impl.mlmodelc in the bundle resource"); return nil; } |
| | return [NSURL fileURLWithPath:assetPath]; |
| | } |
| |
|
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | - (instancetype)initWithMLModel:(MLModel *)model { |
| | if (model == nil) { |
| | return nil; |
| | } |
| | self = [super init]; |
| | if (self != nil) { |
| | _model = model; |
| | } |
| | return self; |
| | } |
| |
|
| |
|
| | |
| | |
| | |
| | - (nullable instancetype)init { |
| | return [self initWithContentsOfURL:(NSURL * _Nonnull)self.class.URLOfModelInThisBundle error:nil]; |
| | } |
| |
|
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | - (nullable instancetype)initWithConfiguration:(MLModelConfiguration *)configuration error:(NSError * _Nullable __autoreleasing * _Nullable)error { |
| | return [self initWithContentsOfURL:(NSURL * _Nonnull)self.class.URLOfModelInThisBundle configuration:configuration error:error]; |
| | } |
| |
|
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | - (nullable instancetype)initWithContentsOfURL:(NSURL *)modelURL error:(NSError * _Nullable __autoreleasing * _Nullable)error { |
| | MLModel *model = [MLModel modelWithContentsOfURL:modelURL error:error]; |
| | if (model == nil) { return nil; } |
| | return [self initWithMLModel:model]; |
| | } |
| |
|
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | - (nullable instancetype)initWithContentsOfURL:(NSURL *)modelURL configuration:(MLModelConfiguration *)configuration error:(NSError * _Nullable __autoreleasing * _Nullable)error { |
| | MLModel *model = [MLModel modelWithContentsOfURL:modelURL configuration:configuration error:error]; |
| | if (model == nil) { return nil; } |
| | return [self initWithMLModel:model]; |
| | } |
| |
|
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | + (void)loadWithConfiguration:(MLModelConfiguration *)configuration completionHandler:(void (^)(whisper_decoder_impl * _Nullable model, NSError * _Nullable error))handler { |
| | [self loadContentsOfURL:(NSURL * _Nonnull)[self URLOfModelInThisBundle] |
| | configuration:configuration |
| | completionHandler:handler]; |
| | } |
| |
|
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | + (void)loadContentsOfURL:(NSURL *)modelURL configuration:(MLModelConfiguration *)configuration completionHandler:(void (^)(whisper_decoder_impl * _Nullable model, NSError * _Nullable error))handler { |
| | [MLModel loadContentsOfURL:modelURL |
| | configuration:configuration |
| | completionHandler:^(MLModel *model, NSError *error) { |
| | if (model != nil) { |
| | whisper_decoder_impl *typedModel = [[whisper_decoder_impl alloc] initWithMLModel:model]; |
| | handler(typedModel, nil); |
| | } else { |
| | handler(nil, error); |
| | } |
| | }]; |
| | } |
| |
|
| | - (nullable whisper_decoder_implOutput *)predictionFromFeatures:(whisper_decoder_implInput *)input error:(NSError * _Nullable __autoreleasing * _Nullable)error { |
| | return [self predictionFromFeatures:input options:[[MLPredictionOptions alloc] init] error:error]; |
| | } |
| |
|
| | - (nullable whisper_decoder_implOutput *)predictionFromFeatures:(whisper_decoder_implInput *)input options:(MLPredictionOptions *)options error:(NSError * _Nullable __autoreleasing * _Nullable)error { |
| | id<MLFeatureProvider> outFeatures = [self.model predictionFromFeatures:input options:options error:error]; |
| | if (!outFeatures) { return nil; } |
| | return [[whisper_decoder_implOutput alloc] initWithCast_76:(MLMultiArray *)[outFeatures featureValueForName:@"cast_76"].multiArrayValue]; |
| | } |
| |
|
| | - (void)predictionFromFeatures:(whisper_decoder_implInput *)input completionHandler:(void (^)(whisper_decoder_implOutput * _Nullable output, NSError * _Nullable error))completionHandler { |
| | [self.model predictionFromFeatures:input completionHandler:^(id<MLFeatureProvider> prediction, NSError *predictionError) { |
| | if (prediction != nil) { |
| | whisper_decoder_implOutput *output = [[whisper_decoder_implOutput alloc] initWithCast_76:(MLMultiArray *)[prediction featureValueForName:@"cast_76"].multiArrayValue]; |
| | completionHandler(output, predictionError); |
| | } else { |
| | completionHandler(nil, predictionError); |
| | } |
| | }]; |
| | } |
| |
|
| | - (void)predictionFromFeatures:(whisper_decoder_implInput *)input options:(MLPredictionOptions *)options completionHandler:(void (^)(whisper_decoder_implOutput * _Nullable output, NSError * _Nullable error))completionHandler { |
| | [self.model predictionFromFeatures:input options:options completionHandler:^(id<MLFeatureProvider> prediction, NSError *predictionError) { |
| | if (prediction != nil) { |
| | whisper_decoder_implOutput *output = [[whisper_decoder_implOutput alloc] initWithCast_76:(MLMultiArray *)[prediction featureValueForName:@"cast_76"].multiArrayValue]; |
| | completionHandler(output, predictionError); |
| | } else { |
| | completionHandler(nil, predictionError); |
| | } |
| | }]; |
| | } |
| |
|
| | - (nullable whisper_decoder_implOutput *)predictionFromToken_data:(MLMultiArray *)token_data audio_data:(MLMultiArray *)audio_data error:(NSError * _Nullable __autoreleasing * _Nullable)error { |
| | whisper_decoder_implInput *input_ = [[whisper_decoder_implInput alloc] initWithToken_data:token_data audio_data:audio_data]; |
| | return [self predictionFromFeatures:input_ error:error]; |
| | } |
| |
|
| | - (nullable NSArray<whisper_decoder_implOutput *> *)predictionsFromInputs:(NSArray<whisper_decoder_implInput*> *)inputArray options:(MLPredictionOptions *)options error:(NSError * _Nullable __autoreleasing * _Nullable)error { |
| | id<MLBatchProvider> inBatch = [[MLArrayBatchProvider alloc] initWithFeatureProviderArray:inputArray]; |
| | id<MLBatchProvider> outBatch = [self.model predictionsFromBatch:inBatch options:options error:error]; |
| | if (!outBatch) { return nil; } |
| | NSMutableArray<whisper_decoder_implOutput*> *results = [NSMutableArray arrayWithCapacity:(NSUInteger)outBatch.count]; |
| | for (NSInteger i = 0; i < outBatch.count; i++) { |
| | id<MLFeatureProvider> resultProvider = [outBatch featuresAtIndex:i]; |
| | whisper_decoder_implOutput * result = [[whisper_decoder_implOutput alloc] initWithCast_76:(MLMultiArray *)[resultProvider featureValueForName:@"cast_76"].multiArrayValue]; |
| | [results addObject:result]; |
| | } |
| | return results; |
| | } |
| |
|
| | @end |
| |
|