Spaces:
Running
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.
|
@@ -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 =
|
| 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 =
|
| 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 =
|
| 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 =
|
| 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 |
};
|
|
@@ -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;
|