danbev commited on
Commit
d520f58
·
unverified ·
1 Parent(s): ce83587

examples : use xcframework in whisper.objc example (#2882)

Browse files

* examples : use xcframework in whisper.objc example

This commit updates the whisper.objc example to use the xcframework.

The motivation for this to be consistent with the swift example and to
also act as a reference for how to use the xcframework in an objc
project.

Resolves: https://github.com/ggerganov/whisper.cpp/issues/2881

* examples : setup audio session viewDidload

This commit adds the setup of the audio session in the viewDidload
method of the ViewController.m file. This is necessary to allow the app
to record audio.

The motivation for this is that without this it was not possible to
caputue audio from the microphone. It was possible to click on the
Capture button but nothing happened after that, and the button was not
marked red indicating that the button could be clicked again to stop
capturing. With this change it is possible to capture audio from the
microphone and get it transcribed.

examples/whisper.objc/whisper.objc.xcodeproj/project.pbxproj CHANGED
@@ -7,7 +7,6 @@
7
  objects = {
8
 
9
  /* Begin PBXBuildFile section */
10
- 1844471A2AB211A2007D6BFE /* ggml-alloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 184447182AB211A2007D6BFE /* ggml-alloc.c */; };
11
  18627C7B29052BDF00BD2A04 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 18627C7A29052BDF00BD2A04 /* AppDelegate.m */; };
12
  18627C7E29052BDF00BD2A04 /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 18627C7D29052BDF00BD2A04 /* SceneDelegate.m */; };
13
  18627C8129052BDF00BD2A04 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 18627C8029052BDF00BD2A04 /* ViewController.m */; };
@@ -15,23 +14,12 @@
15
  18627C8629052BE000BD2A04 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 18627C8529052BE000BD2A04 /* Assets.xcassets */; };
16
  18627C8929052BE000BD2A04 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 18627C8729052BE000BD2A04 /* LaunchScreen.storyboard */; };
17
  18627C8C29052BE000BD2A04 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 18627C8B29052BE000BD2A04 /* main.m */; };
18
- 18627C9429052C4900BD2A04 /* whisper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18627C9329052C4900BD2A04 /* whisper.cpp */; settings = {COMPILER_FLAGS = "-DWHISPER_USE_COREML -DWHISPER_COREML_ALLOW_FALLBACK -DGGML_USE_METAL"; }; };
19
- 18627C9629052C5800BD2A04 /* ggml.c in Sources */ = {isa = PBXBuildFile; fileRef = 18627C9529052C5800BD2A04 /* ggml.c */; settings = {COMPILER_FLAGS = "-DGGML_USE_ACCELERATE -DGGML_USE_METAL"; }; };
20
  18627C9B29052CFF00BD2A04 /* ggml-base.en.bin in Resources */ = {isa = PBXBuildFile; fileRef = 18627C9A29052CFF00BD2A04 /* ggml-base.en.bin */; };
21
- 18ABE15A2AF556340044A204 /* ggml-backend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18ABE1572AF556340044A204 /* ggml-backend.cpp */; };
22
- 18ABE15B2AF556340044A204 /* ggml-quants.c in Sources */ = {isa = PBXBuildFile; fileRef = 18ABE1592AF556340044A204 /* ggml-quants.c */; };
23
- 18E864A92CE73C1E0094B8B3 /* ggml-cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 18E864A82CE73C1E0094B8B3 /* ggml-cpu.c */; };
24
- 18F8C0BC2CEDF4DC00CAD607 /* ggml-threading.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18F8C0BB2CEDF4DC00CAD607 /* ggml-threading.cpp */; };
25
- 18F8C0BE2CEDF50700CAD607 /* ggml-cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18F8C0BD2CEDF50700CAD607 /* ggml-cpu.cpp */; };
26
- 18F8C0C42CEDF52700CAD607 /* ggml-cpu-aarch64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18F8C0C02CEDF52700CAD607 /* ggml-cpu-aarch64.cpp */; settings = {COMPILER_FLAGS = "-x c++"; }; };
27
- 18F8C0C52CEDF52700CAD607 /* ggml-cpu-quants.c in Sources */ = {isa = PBXBuildFile; fileRef = 18F8C0C32CEDF52700CAD607 /* ggml-cpu-quants.c */; };
28
- 18F8C0C72CEDF7AB00CAD607 /* ggml-backend-reg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18F8C0C62CEDF7AB00CAD607 /* ggml-backend-reg.cpp */; };
29
- 433188B82D3A187C00E3FE79 /* gguf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 433188B72D3A187C00E3FE79 /* gguf.cpp */; };
30
- 437B63E22D36280C002A49EC /* ggml-cpu-traits.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 437B63E12D36280C002A49EC /* ggml-cpu-traits.cpp */; };
31
  7FE3424B2A0C3FA20015A058 /* whisper-encoder-impl.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FE342452A0C3FA20015A058 /* whisper-encoder-impl.m */; };
32
  7FE3424C2A0C3FA20015A058 /* whisper-encoder.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7FE342472A0C3FA20015A058 /* whisper-encoder.mm */; };
33
- 7FE3424D2A0C3FA20015A058 /* whisper-decoder-impl.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FE3424A2A0C3FA20015A058 /* whisper-decoder-impl.m */; };
34
  7FE3424F2A0C418A0015A058 /* ggml-base.en-encoder.mlmodelc in Resources */ = {isa = PBXBuildFile; fileRef = 7FE3424E2A0C418A0015A058 /* ggml-base.en-encoder.mlmodelc */; };
 
 
35
  /* End PBXBuildFile section */
36
 
37
  /* Begin PBXCopyFilesBuildPhase section */
@@ -45,11 +33,20 @@
45
  name = "Copy Files";
46
  runOnlyForDeploymentPostprocessing = 0;
47
  };
 
 
 
 
 
 
 
 
 
 
 
48
  /* End PBXCopyFilesBuildPhase section */
49
 
50
  /* Begin PBXFileReference section */
51
- 184447182AB211A2007D6BFE /* ggml-alloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ggml-alloc.c"; path = "../../../ggml/src/ggml-alloc.c"; sourceTree = "<group>"; };
52
- 184447192AB211A2007D6BFE /* ggml-alloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "ggml-alloc.h"; path = "../../../ggml/include/ggml-alloc.h"; sourceTree = "<group>"; };
53
  18627C7629052BDF00BD2A04 /* whisper.objc.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = whisper.objc.app; sourceTree = BUILT_PRODUCTS_DIR; };
54
  18627C7929052BDF00BD2A04 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
55
  18627C7A29052BDF00BD2A04 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
@@ -62,34 +59,7 @@
62
  18627C8829052BE000BD2A04 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
63
  18627C8A29052BE000BD2A04 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
64
  18627C8B29052BE000BD2A04 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
65
- 18627C9229052C2B00BD2A04 /* whisper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = whisper.h; path = ../../../include/whisper.h; sourceTree = "<group>"; };
66
- 18627C9329052C4900BD2A04 /* whisper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = whisper.cpp; path = ../../../src/whisper.cpp; sourceTree = "<group>"; };
67
- 18627C9529052C5800BD2A04 /* ggml.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ggml.c; path = ../../../ggml/src/ggml.c; sourceTree = "<group>"; };
68
- 18627C9729052C6600BD2A04 /* ggml.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ggml.h; path = ../../../ggml/include/ggml.h; sourceTree = "<group>"; };
69
  18627C9A29052CFF00BD2A04 /* ggml-base.en.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; name = "ggml-base.en.bin"; path = "../../../models/ggml-base.en.bin"; sourceTree = "<group>"; };
70
- 18A275FF2C2A9563001C8D37 /* ggml-common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "ggml-common.h"; path = "../../../ggml/src/ggml-common.h"; sourceTree = "<group>"; };
71
- 18ABE1542AF556340044A204 /* ggml-quants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "ggml-quants.h"; path = "../../../ggml/src/ggml-quants.h"; sourceTree = "<group>"; };
72
- 18ABE1552AF556340044A204 /* ggml-backend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "ggml-backend.h"; path = "../../../ggml/include/ggml-backend.h"; sourceTree = "<group>"; };
73
- 18ABE1562AF556340044A204 /* ggml-backend-impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "ggml-backend-impl.h"; path = "../../../ggml/src/ggml-backend-impl.h"; sourceTree = "<group>"; };
74
- 18ABE1572AF556340044A204 /* ggml-backend.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = "ggml-backend.cpp"; path = "../../../ggml/src/ggml-backend.cpp"; sourceTree = "<group>"; };
75
- 18ABE1582AF556340044A204 /* ggml-impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "ggml-impl.h"; path = "../../../ggml/src/ggml-impl.h"; sourceTree = "<group>"; };
76
- 18ABE1592AF556340044A204 /* ggml-quants.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ggml-quants.c"; path = "../../../ggml/src/ggml-quants.c"; sourceTree = "<group>"; };
77
- 18B07DCB2D70411100B3B87C /* ggml-cpp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ggml-cpp.h"; path = "../../../ggml/include/ggml-cpp.h"; sourceTree = "<group>"; };
78
- 18E864A82CE73C1E0094B8B3 /* ggml-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "ggml-cpu.c"; path = "../../../ggml/src/ggml-cpu/ggml-cpu.c"; sourceTree = "<group>"; };
79
- 18E864AA2CE73C580094B8B3 /* ggml-cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ggml-cpu.h"; path = "../../../ggml/include/ggml-cpu.h"; sourceTree = "<group>"; };
80
- 18F8C0BA2CEDF4DC00CAD607 /* ggml-threading.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ggml-threading.h"; path = "../../../ggml/src/ggml-threading.h"; sourceTree = "<group>"; };
81
- 18F8C0BB2CEDF4DC00CAD607 /* ggml-threading.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ggml-threading.cpp"; path = "../../../ggml/src/ggml-threading.cpp"; sourceTree = "<group>"; };
82
- 18F8C0BD2CEDF50700CAD607 /* ggml-cpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ggml-cpu.cpp"; path = "../../../ggml/src/ggml-cpu/ggml-cpu.cpp"; sourceTree = "<group>"; };
83
- 18F8C0BF2CEDF52700CAD607 /* ggml-cpu-aarch64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ggml-cpu-aarch64.h"; path = "../../../ggml/src/ggml-cpu/ggml-cpu-aarch64.h"; sourceTree = "<group>"; };
84
- 18F8C0C02CEDF52700CAD607 /* ggml-cpu-aarch64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "ggml-cpu-aarch64.cpp"; path = "../../../ggml/src/ggml-cpu/ggml-cpu-aarch64.cpp"; sourceTree = "<group>"; };
85
- 18F8C0C12CEDF52700CAD607 /* ggml-cpu-impl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ggml-cpu-impl.h"; path = "../../../ggml/src/ggml-cpu/ggml-cpu-impl.h"; sourceTree = "<group>"; };
86
- 18F8C0C22CEDF52700CAD607 /* ggml-cpu-quants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ggml-cpu-quants.h"; path = "../../../ggml/src/ggml-cpu/ggml-cpu-quants.h"; sourceTree = "<group>"; };
87
- 18F8C0C32CEDF52700CAD607 /* ggml-cpu-quants.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "ggml-cpu-quants.c"; path = "../../../ggml/src/ggml-cpu/ggml-cpu-quants.c"; sourceTree = "<group>"; };
88
- 18F8C0C62CEDF7AB00CAD607 /* ggml-backend-reg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ggml-backend-reg.cpp"; path = "../../../ggml/src/ggml-backend-reg.cpp"; sourceTree = "<group>"; };
89
- 433188B72D3A187C00E3FE79 /* gguf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = gguf.cpp; path = ../../../ggml/src/gguf.cpp; sourceTree = "<group>"; };
90
- 433188B92D3A18A400E3FE79 /* gguf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = gguf.h; path = ../../../ggml/include/gguf.h; sourceTree = "<group>"; };
91
- 437B63E02D36280C002A49EC /* ggml-cpu-traits.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ggml-cpu-traits.h"; path = "../../../ggml/src/ggml-cpu/ggml-cpu-traits.h"; sourceTree = "<group>"; };
92
- 437B63E12D36280C002A49EC /* ggml-cpu-traits.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "ggml-cpu-traits.cpp"; path = "../../../ggml/src/ggml-cpu/ggml-cpu-traits.cpp"; sourceTree = "<group>"; };
93
  7FE342452A0C3FA20015A058 /* whisper-encoder-impl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "whisper-encoder-impl.m"; sourceTree = "<group>"; };
94
  7FE342462A0C3FA20015A058 /* whisper-encoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "whisper-encoder.h"; sourceTree = "<group>"; };
95
  7FE342472A0C3FA20015A058 /* whisper-encoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "whisper-encoder.mm"; sourceTree = "<group>"; };
@@ -97,6 +67,7 @@
97
  7FE342492A0C3FA20015A058 /* whisper-encoder-impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "whisper-encoder-impl.h"; sourceTree = "<group>"; };
98
  7FE3424A2A0C3FA20015A058 /* whisper-decoder-impl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "whisper-decoder-impl.m"; sourceTree = "<group>"; };
99
  7FE3424E2A0C418A0015A058 /* ggml-base.en-encoder.mlmodelc */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = "ggml-base.en-encoder.mlmodelc"; path = "../../../models/ggml-base.en-encoder.mlmodelc"; sourceTree = "<group>"; };
 
100
  /* End PBXFileReference section */
101
 
102
  /* Begin PBXFrameworksBuildPhase section */
@@ -104,6 +75,7 @@
104
  isa = PBXFrameworksBuildPhase;
105
  buildActionMask = 2147483647;
106
  files = (
 
107
  );
108
  runOnlyForDeploymentPostprocessing = 0;
109
  };
@@ -114,6 +86,7 @@
114
  isa = PBXGroup;
115
  children = (
116
  18627C7829052BDF00BD2A04 /* whisper.objc */,
 
117
  18627C7729052BDF00BD2A04 /* Products */,
118
  );
119
  sourceTree = "<group>";
@@ -129,38 +102,9 @@
129
  18627C7829052BDF00BD2A04 /* whisper.objc */ = {
130
  isa = PBXGroup;
131
  children = (
132
- 18B07DCB2D70411100B3B87C /* ggml-cpp.h */,
133
- 433188B92D3A18A400E3FE79 /* gguf.h */,
134
- 433188B72D3A187C00E3FE79 /* gguf.cpp */,
135
- 18F8C0C62CEDF7AB00CAD607 /* ggml-backend-reg.cpp */,
136
- 18F8C0BF2CEDF52700CAD607 /* ggml-cpu-aarch64.h */,
137
- 18F8C0C02CEDF52700CAD607 /* ggml-cpu-aarch64.cpp */,
138
- 18F8C0C12CEDF52700CAD607 /* ggml-cpu-impl.h */,
139
- 437B63E02D36280C002A49EC /* ggml-cpu-traits.h */,
140
- 437B63E12D36280C002A49EC /* ggml-cpu-traits.cpp */,
141
- 18F8C0C22CEDF52700CAD607 /* ggml-cpu-quants.h */,
142
- 18F8C0C32CEDF52700CAD607 /* ggml-cpu-quants.c */,
143
- 18F8C0BD2CEDF50700CAD607 /* ggml-cpu.cpp */,
144
- 18F8C0BA2CEDF4DC00CAD607 /* ggml-threading.h */,
145
- 18F8C0BB2CEDF4DC00CAD607 /* ggml-threading.cpp */,
146
- 18E864AA2CE73C580094B8B3 /* ggml-cpu.h */,
147
- 18E864A82CE73C1E0094B8B3 /* ggml-cpu.c */,
148
- 18A275FF2C2A9563001C8D37 /* ggml-common.h */,
149
- 18ABE1562AF556340044A204 /* ggml-backend-impl.h */,
150
- 18ABE1572AF556340044A204 /* ggml-backend.cpp */,
151
- 18ABE1552AF556340044A204 /* ggml-backend.h */,
152
- 18ABE1582AF556340044A204 /* ggml-impl.h */,
153
- 18ABE1592AF556340044A204 /* ggml-quants.c */,
154
- 18ABE1542AF556340044A204 /* ggml-quants.h */,
155
- 184447182AB211A2007D6BFE /* ggml-alloc.c */,
156
- 184447192AB211A2007D6BFE /* ggml-alloc.h */,
157
  7FE3424E2A0C418A0015A058 /* ggml-base.en-encoder.mlmodelc */,
158
  7FE342442A0C3FA20015A058 /* coreml */,
159
  18627C9A29052CFF00BD2A04 /* ggml-base.en.bin */,
160
- 18627C9729052C6600BD2A04 /* ggml.h */,
161
- 18627C9529052C5800BD2A04 /* ggml.c */,
162
- 18627C9329052C4900BD2A04 /* whisper.cpp */,
163
- 18627C9229052C2B00BD2A04 /* whisper.h */,
164
  18627C7929052BDF00BD2A04 /* AppDelegate.h */,
165
  18627C7A29052BDF00BD2A04 /* AppDelegate.m */,
166
  18627C7C29052BDF00BD2A04 /* SceneDelegate.h */,
@@ -190,6 +134,14 @@
190
  path = ../../../src/coreml;
191
  sourceTree = "<group>";
192
  };
 
 
 
 
 
 
 
 
193
  /* End PBXGroup section */
194
 
195
  /* Begin PBXNativeTarget section */
@@ -201,6 +153,7 @@
201
  18627C7329052BDF00BD2A04 /* Frameworks */,
202
  18627C7429052BDF00BD2A04 /* Resources */,
203
  184447202AB21B25007D6BFE /* Copy Files */,
 
204
  );
205
  buildRules = (
206
  );
@@ -264,24 +217,10 @@
264
  buildActionMask = 2147483647;
265
  files = (
266
  18627C8129052BDF00BD2A04 /* ViewController.m in Sources */,
267
- 18ABE15B2AF556340044A204 /* ggml-quants.c in Sources */,
268
  7FE3424C2A0C3FA20015A058 /* whisper-encoder.mm in Sources */,
269
- 18627C9429052C4900BD2A04 /* whisper.cpp in Sources */,
270
- 437B63E22D36280C002A49EC /* ggml-cpu-traits.cpp in Sources */,
271
- 18627C9629052C5800BD2A04 /* ggml.c in Sources */,
272
  18627C7B29052BDF00BD2A04 /* AppDelegate.m in Sources */,
273
- 7FE3424D2A0C3FA20015A058 /* whisper-decoder-impl.m in Sources */,
274
- 18F8C0C72CEDF7AB00CAD607 /* ggml-backend-reg.cpp in Sources */,
275
- 18F8C0BE2CEDF50700CAD607 /* ggml-cpu.cpp in Sources */,
276
- 1844471A2AB211A2007D6BFE /* ggml-alloc.c in Sources */,
277
- 18F8C0C42CEDF52700CAD607 /* ggml-cpu-aarch64.cpp in Sources */,
278
- 18F8C0C52CEDF52700CAD607 /* ggml-cpu-quants.c in Sources */,
279
- 18E864A92CE73C1E0094B8B3 /* ggml-cpu.c in Sources */,
280
- 18ABE15A2AF556340044A204 /* ggml-backend.cpp in Sources */,
281
  18627C8C29052BE000BD2A04 /* main.m in Sources */,
282
  18627C7E29052BDF00BD2A04 /* SceneDelegate.m in Sources */,
283
- 433188B82D3A187C00E3FE79 /* gguf.cpp in Sources */,
284
- 18F8C0BC2CEDF4DC00CAD607 /* ggml-threading.cpp in Sources */,
285
  7FE3424B2A0C3FA20015A058 /* whisper-encoder-impl.m in Sources */,
286
  );
287
  runOnlyForDeploymentPostprocessing = 0;
@@ -359,7 +298,7 @@
359
  GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
360
  GCC_WARN_UNUSED_FUNCTION = YES;
361
  GCC_WARN_UNUSED_VARIABLE = YES;
362
- HEADER_SEARCH_PATHS = ../../../ggml/src/;
363
  IPHONEOS_DEPLOYMENT_TARGET = 16.0;
364
  MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
365
  MTL_FAST_MATH = YES;
@@ -413,7 +352,7 @@
413
  GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
414
  GCC_WARN_UNUSED_FUNCTION = YES;
415
  GCC_WARN_UNUSED_VARIABLE = YES;
416
- HEADER_SEARCH_PATHS = ../../../ggml/src/;
417
  IPHONEOS_DEPLOYMENT_TARGET = 16.0;
418
  MTL_ENABLE_DEBUG_INFO = NO;
419
  MTL_FAST_MATH = YES;
@@ -437,7 +376,7 @@
437
  DEVELOPMENT_TEAM = P8JZH34X63;
438
  GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
439
  GENERATE_INFOPLIST_FILE = YES;
440
- HEADER_SEARCH_PATHS = ../../../ggml/src/;
441
  INFOPLIST_FILE = whisper.objc/Info.plist;
442
  INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
443
  INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
@@ -455,6 +394,7 @@
455
  PRODUCT_NAME = "$(TARGET_NAME)";
456
  SWIFT_EMIT_LOC_STRINGS = YES;
457
  TARGETED_DEVICE_FAMILY = "1,2";
 
458
  };
459
  name = Debug;
460
  };
@@ -469,7 +409,7 @@
469
  DEVELOPMENT_TEAM = P8JZH34X63;
470
  GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
471
  GENERATE_INFOPLIST_FILE = YES;
472
- HEADER_SEARCH_PATHS = ../../../ggml/src/;
473
  INFOPLIST_FILE = whisper.objc/Info.plist;
474
  INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
475
  INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
@@ -487,6 +427,7 @@
487
  PRODUCT_NAME = "$(TARGET_NAME)";
488
  SWIFT_EMIT_LOC_STRINGS = YES;
489
  TARGETED_DEVICE_FAMILY = "1,2";
 
490
  };
491
  name = Release;
492
  };
 
7
  objects = {
8
 
9
  /* Begin PBXBuildFile section */
 
10
  18627C7B29052BDF00BD2A04 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 18627C7A29052BDF00BD2A04 /* AppDelegate.m */; };
11
  18627C7E29052BDF00BD2A04 /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 18627C7D29052BDF00BD2A04 /* SceneDelegate.m */; };
12
  18627C8129052BDF00BD2A04 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 18627C8029052BDF00BD2A04 /* ViewController.m */; };
 
14
  18627C8629052BE000BD2A04 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 18627C8529052BE000BD2A04 /* Assets.xcassets */; };
15
  18627C8929052BE000BD2A04 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 18627C8729052BE000BD2A04 /* LaunchScreen.storyboard */; };
16
  18627C8C29052BE000BD2A04 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 18627C8B29052BE000BD2A04 /* main.m */; };
 
 
17
  18627C9B29052CFF00BD2A04 /* ggml-base.en.bin in Resources */ = {isa = PBXBuildFile; fileRef = 18627C9A29052CFF00BD2A04 /* ggml-base.en.bin */; };
 
 
 
 
 
 
 
 
 
 
18
  7FE3424B2A0C3FA20015A058 /* whisper-encoder-impl.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FE342452A0C3FA20015A058 /* whisper-encoder-impl.m */; };
19
  7FE3424C2A0C3FA20015A058 /* whisper-encoder.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7FE342472A0C3FA20015A058 /* whisper-encoder.mm */; };
 
20
  7FE3424F2A0C418A0015A058 /* ggml-base.en-encoder.mlmodelc in Resources */ = {isa = PBXBuildFile; fileRef = 7FE3424E2A0C418A0015A058 /* ggml-base.en-encoder.mlmodelc */; };
21
+ DDE3609F2D87EA8C004EA223 /* whisper.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = DDE3609E2D87EA8C004EA223 /* whisper.xcframework */; };
22
+ DDE360A02D87EA8C004EA223 /* whisper.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DDE3609E2D87EA8C004EA223 /* whisper.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
23
  /* End PBXBuildFile section */
24
 
25
  /* Begin PBXCopyFilesBuildPhase section */
 
33
  name = "Copy Files";
34
  runOnlyForDeploymentPostprocessing = 0;
35
  };
36
+ DDE360A12D87EA8C004EA223 /* Embed Frameworks */ = {
37
+ isa = PBXCopyFilesBuildPhase;
38
+ buildActionMask = 2147483647;
39
+ dstPath = "";
40
+ dstSubfolderSpec = 10;
41
+ files = (
42
+ DDE360A02D87EA8C004EA223 /* whisper.xcframework in Embed Frameworks */,
43
+ );
44
+ name = "Embed Frameworks";
45
+ runOnlyForDeploymentPostprocessing = 0;
46
+ };
47
  /* End PBXCopyFilesBuildPhase section */
48
 
49
  /* Begin PBXFileReference section */
 
 
50
  18627C7629052BDF00BD2A04 /* whisper.objc.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = whisper.objc.app; sourceTree = BUILT_PRODUCTS_DIR; };
51
  18627C7929052BDF00BD2A04 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
52
  18627C7A29052BDF00BD2A04 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
 
59
  18627C8829052BE000BD2A04 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
60
  18627C8A29052BE000BD2A04 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
61
  18627C8B29052BE000BD2A04 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
 
 
 
 
62
  18627C9A29052CFF00BD2A04 /* ggml-base.en.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; name = "ggml-base.en.bin"; path = "../../../models/ggml-base.en.bin"; sourceTree = "<group>"; };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  7FE342452A0C3FA20015A058 /* whisper-encoder-impl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "whisper-encoder-impl.m"; sourceTree = "<group>"; };
64
  7FE342462A0C3FA20015A058 /* whisper-encoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "whisper-encoder.h"; sourceTree = "<group>"; };
65
  7FE342472A0C3FA20015A058 /* whisper-encoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "whisper-encoder.mm"; sourceTree = "<group>"; };
 
67
  7FE342492A0C3FA20015A058 /* whisper-encoder-impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "whisper-encoder-impl.h"; sourceTree = "<group>"; };
68
  7FE3424A2A0C3FA20015A058 /* whisper-decoder-impl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "whisper-decoder-impl.m"; sourceTree = "<group>"; };
69
  7FE3424E2A0C418A0015A058 /* ggml-base.en-encoder.mlmodelc */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = "ggml-base.en-encoder.mlmodelc"; path = "../../../models/ggml-base.en-encoder.mlmodelc"; sourceTree = "<group>"; };
70
+ DDE3609E2D87EA8C004EA223 /* whisper.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = whisper.xcframework; path = "../../build-apple/whisper.xcframework"; sourceTree = "<group>"; };
71
  /* End PBXFileReference section */
72
 
73
  /* Begin PBXFrameworksBuildPhase section */
 
75
  isa = PBXFrameworksBuildPhase;
76
  buildActionMask = 2147483647;
77
  files = (
78
+ DDE3609F2D87EA8C004EA223 /* whisper.xcframework in Frameworks */,
79
  );
80
  runOnlyForDeploymentPostprocessing = 0;
81
  };
 
86
  isa = PBXGroup;
87
  children = (
88
  18627C7829052BDF00BD2A04 /* whisper.objc */,
89
+ DDE3609D2D87EA8C004EA223 /* Frameworks */,
90
  18627C7729052BDF00BD2A04 /* Products */,
91
  );
92
  sourceTree = "<group>";
 
102
  18627C7829052BDF00BD2A04 /* whisper.objc */ = {
103
  isa = PBXGroup;
104
  children = (
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  7FE3424E2A0C418A0015A058 /* ggml-base.en-encoder.mlmodelc */,
106
  7FE342442A0C3FA20015A058 /* coreml */,
107
  18627C9A29052CFF00BD2A04 /* ggml-base.en.bin */,
 
 
 
 
108
  18627C7929052BDF00BD2A04 /* AppDelegate.h */,
109
  18627C7A29052BDF00BD2A04 /* AppDelegate.m */,
110
  18627C7C29052BDF00BD2A04 /* SceneDelegate.h */,
 
134
  path = ../../../src/coreml;
135
  sourceTree = "<group>";
136
  };
137
+ DDE3609D2D87EA8C004EA223 /* Frameworks */ = {
138
+ isa = PBXGroup;
139
+ children = (
140
+ DDE3609E2D87EA8C004EA223 /* whisper.xcframework */,
141
+ );
142
+ name = Frameworks;
143
+ sourceTree = "<group>";
144
+ };
145
  /* End PBXGroup section */
146
 
147
  /* Begin PBXNativeTarget section */
 
153
  18627C7329052BDF00BD2A04 /* Frameworks */,
154
  18627C7429052BDF00BD2A04 /* Resources */,
155
  184447202AB21B25007D6BFE /* Copy Files */,
156
+ DDE360A12D87EA8C004EA223 /* Embed Frameworks */,
157
  );
158
  buildRules = (
159
  );
 
217
  buildActionMask = 2147483647;
218
  files = (
219
  18627C8129052BDF00BD2A04 /* ViewController.m in Sources */,
 
220
  7FE3424C2A0C3FA20015A058 /* whisper-encoder.mm in Sources */,
 
 
 
221
  18627C7B29052BDF00BD2A04 /* AppDelegate.m in Sources */,
 
 
 
 
 
 
 
 
222
  18627C8C29052BE000BD2A04 /* main.m in Sources */,
223
  18627C7E29052BDF00BD2A04 /* SceneDelegate.m in Sources */,
 
 
224
  7FE3424B2A0C3FA20015A058 /* whisper-encoder-impl.m in Sources */,
225
  );
226
  runOnlyForDeploymentPostprocessing = 0;
 
298
  GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
299
  GCC_WARN_UNUSED_FUNCTION = YES;
300
  GCC_WARN_UNUSED_VARIABLE = YES;
301
+ HEADER_SEARCH_PATHS = "";
302
  IPHONEOS_DEPLOYMENT_TARGET = 16.0;
303
  MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
304
  MTL_FAST_MATH = YES;
 
352
  GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
353
  GCC_WARN_UNUSED_FUNCTION = YES;
354
  GCC_WARN_UNUSED_VARIABLE = YES;
355
+ HEADER_SEARCH_PATHS = "";
356
  IPHONEOS_DEPLOYMENT_TARGET = 16.0;
357
  MTL_ENABLE_DEBUG_INFO = NO;
358
  MTL_FAST_MATH = YES;
 
376
  DEVELOPMENT_TEAM = P8JZH34X63;
377
  GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
378
  GENERATE_INFOPLIST_FILE = YES;
379
+ HEADER_SEARCH_PATHS = "";
380
  INFOPLIST_FILE = whisper.objc/Info.plist;
381
  INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
382
  INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
 
394
  PRODUCT_NAME = "$(TARGET_NAME)";
395
  SWIFT_EMIT_LOC_STRINGS = YES;
396
  TARGETED_DEVICE_FAMILY = "1,2";
397
+ WARNING_CFLAGS = "-Wno-quoted-include-in-framework-header";
398
  };
399
  name = Debug;
400
  };
 
409
  DEVELOPMENT_TEAM = P8JZH34X63;
410
  GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
411
  GENERATE_INFOPLIST_FILE = YES;
412
+ HEADER_SEARCH_PATHS = "";
413
  INFOPLIST_FILE = whisper.objc/Info.plist;
414
  INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
415
  INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
 
427
  PRODUCT_NAME = "$(TARGET_NAME)";
428
  SWIFT_EMIT_LOC_STRINGS = YES;
429
  TARGETED_DEVICE_FAMILY = "1,2";
430
+ WARNING_CFLAGS = "-Wno-quoted-include-in-framework-header";
431
  };
432
  name = Release;
433
  };
examples/whisper.objc/whisper.objc/ViewController.m CHANGED
@@ -6,8 +6,8 @@
6
  //
7
 
8
  #import "ViewController.h"
 
9
 
10
- #import "whisper.h"
11
 
12
  #define NUM_BYTES_PER_BUFFER 16*1024
13
 
@@ -83,6 +83,19 @@ void AudioInputCallback(void * inUserData,
83
  stateInp.n_samples = 0;
84
  stateInp.audioBufferI16 = malloc(MAX_AUDIO_SEC*SAMPLE_RATE*sizeof(int16_t));
85
  stateInp.audioBufferF32 = malloc(MAX_AUDIO_SEC*SAMPLE_RATE*sizeof(float));
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  }
87
 
88
  stateInp.isTranscribing = false;
 
6
  //
7
 
8
  #import "ViewController.h"
9
+ #import <whisper/whisper.h>
10
 
 
11
 
12
  #define NUM_BYTES_PER_BUFFER 16*1024
13
 
 
83
  stateInp.n_samples = 0;
84
  stateInp.audioBufferI16 = malloc(MAX_AUDIO_SEC*SAMPLE_RATE*sizeof(int16_t));
85
  stateInp.audioBufferF32 = malloc(MAX_AUDIO_SEC*SAMPLE_RATE*sizeof(float));
86
+ // Set up audio session
87
+ NSError *error = nil;
88
+
89
+ [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryRecord error:&error];
90
+ if (error) {
91
+ NSLog(@"Error setting audio session category: %@", error);
92
+ }
93
+
94
+ [[AVAudioSession sharedInstance] setActive:YES error:&error];
95
+ if (error) {
96
+ NSLog(@"Error activating audio session: %@", error);
97
+ }
98
+
99
  }
100
 
101
  stateInp.isTranscribing = false;