diff --git a/recipes/llm-voice-assistant/android/llm-voice-assistant/build.gradle b/recipes/llm-voice-assistant/android/llm-voice-assistant/build.gradle index 0fa58c7..5c0d185 100644 --- a/recipes/llm-voice-assistant/android/llm-voice-assistant/build.gradle +++ b/recipes/llm-voice-assistant/android/llm-voice-assistant/build.gradle @@ -64,7 +64,7 @@ dependencies { implementation 'ai.picovoice:android-voice-processor:1.0.2' implementation 'ai.picovoice:porcupine-android:3.0.1' - implementation 'ai.picovoice:cheetah-android:2.0.0' + implementation 'ai.picovoice:cheetah-android:2.1.0' implementation 'ai.picovoice:picollm-android:1.2.3' implementation 'ai.picovoice:orca-android:1.0.0' } diff --git a/recipes/llm-voice-assistant/android/llm-voice-assistant/src/main/assets/cheetah_params.pv b/recipes/llm-voice-assistant/android/llm-voice-assistant/src/main/assets/cheetah_params.pv index 15e2bd9..b18a3d5 100644 Binary files a/recipes/llm-voice-assistant/android/llm-voice-assistant/src/main/assets/cheetah_params.pv and b/recipes/llm-voice-assistant/android/llm-voice-assistant/src/main/assets/cheetah_params.pv differ diff --git a/recipes/llm-voice-assistant/ios/LLMVoiceAssistantDemo.xcodeproj/project.pbxproj b/recipes/llm-voice-assistant/ios/LLMVoiceAssistantDemo.xcodeproj/project.pbxproj index bf795f2..6e345f1 100644 --- a/recipes/llm-voice-assistant/ios/LLMVoiceAssistantDemo.xcodeproj/project.pbxproj +++ b/recipes/llm-voice-assistant/ios/LLMVoiceAssistantDemo.xcodeproj/project.pbxproj @@ -11,7 +11,12 @@ 02A1194B268D39A700A2AC99 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02A1194A268D39A700A2AC99 /* ContentView.swift */; }; 02A1194D268D39AB00A2AC99 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 02A1194C268D39AB00A2AC99 /* Assets.xcassets */; }; 02A1195F268D3FD600A2AC99 /* ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02A1195E268D3FD600A2AC99 /* ViewModel.swift */; }; - A3FB5D9F86DC48A026E79742 /* libPods-LLMVoiceAssistantDemo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8116446C19FDC139F2B56F5C /* libPods-LLMVoiceAssistantDemo.a */; }; + 34C504D02D271C5E0003405B /* ios_voice_processor in Frameworks */ = {isa = PBXBuildFile; productRef = 34C504CF2D271C5E0003405B /* ios_voice_processor */; }; + 34C504D32D271E4B0003405B /* ios_voice_processor in Frameworks */ = {isa = PBXBuildFile; productRef = 34C504D22D271E4B0003405B /* ios_voice_processor */; }; + 34C504D62D2728300003405B /* Porcupine in Frameworks */ = {isa = PBXBuildFile; productRef = 34C504D52D2728300003405B /* Porcupine */; }; + 34C504D82D2728410003405B /* Cheetah in Frameworks */ = {isa = PBXBuildFile; productRef = 34C504D72D2728410003405B /* Cheetah */; }; + 34CE2DE22D27286800AC10F0 /* PicoLLM in Frameworks */ = {isa = PBXBuildFile; productRef = 34CE2DE12D27286800AC10F0 /* PicoLLM */; }; + 34CE2DE42D27287900AC10F0 /* Orca in Frameworks */ = {isa = PBXBuildFile; productRef = 34CE2DE32D27287900AC10F0 /* Orca */; }; C789D24B2BEA8E5D005FDB10 /* LoadModelView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C789D24A2BEA8E5D005FDB10 /* LoadModelView.swift */; }; C789D24D2BEA8EAE005FDB10 /* ChatView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C789D24C2BEA8EAE005FDB10 /* ChatView.swift */; }; C789D2512BEAD752005FDB10 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = C789D2502BEAD752005FDB10 /* Constants.swift */; }; @@ -27,9 +32,6 @@ 02A1194C268D39AB00A2AC99 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 02A11951268D39AB00A2AC99 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 02A1195E268D3FD600A2AC99 /* ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewModel.swift; sourceTree = ""; }; - 42D19EE4769392460A93BB89 /* Pods-LLMVoiceAssistantDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LLMVoiceAssistantDemo.release.xcconfig"; path = "Target Support Files/Pods-LLMVoiceAssistantDemo/Pods-LLMVoiceAssistantDemo.release.xcconfig"; sourceTree = ""; }; - 505D746A281AD13F6F6D5D11 /* Pods-LLMVoiceAssistantDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LLMVoiceAssistantDemo.debug.xcconfig"; path = "Target Support Files/Pods-LLMVoiceAssistantDemo/Pods-LLMVoiceAssistantDemo.debug.xcconfig"; sourceTree = ""; }; - 8116446C19FDC139F2B56F5C /* libPods-LLMVoiceAssistantDemo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LLMVoiceAssistantDemo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; C789D24A2BEA8E5D005FDB10 /* LoadModelView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadModelView.swift; sourceTree = ""; }; C789D24C2BEA8EAE005FDB10 /* ChatView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatView.swift; sourceTree = ""; }; C789D2502BEAD752005FDB10 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; @@ -43,7 +45,12 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A3FB5D9F86DC48A026E79742 /* libPods-LLMVoiceAssistantDemo.a in Frameworks */, + 34CE2DE22D27286800AC10F0 /* PicoLLM in Frameworks */, + 34C504D62D2728300003405B /* Porcupine in Frameworks */, + 34C504D82D2728410003405B /* Cheetah in Frameworks */, + 34CE2DE42D27287900AC10F0 /* Orca in Frameworks */, + 34C504D32D271E4B0003405B /* ios_voice_processor in Frameworks */, + 34C504D02D271C5E0003405B /* ios_voice_processor in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -55,8 +62,6 @@ children = ( 02A11947268D39A700A2AC99 /* LLMVoiceAssistantDemo */, 02A11946268D39A700A2AC99 /* Products */, - 8DB92FF3DC81AB04D3FF7242 /* Pods */, - E6585D6045A189966C133BD8 /* Frameworks */, ); sourceTree = ""; }; @@ -85,15 +90,6 @@ path = LLMVoiceAssistantDemo; sourceTree = ""; }; - 8DB92FF3DC81AB04D3FF7242 /* Pods */ = { - isa = PBXGroup; - children = ( - 505D746A281AD13F6F6D5D11 /* Pods-LLMVoiceAssistantDemo.debug.xcconfig */, - 42D19EE4769392460A93BB89 /* Pods-LLMVoiceAssistantDemo.release.xcconfig */, - ); - path = Pods; - sourceTree = ""; - }; C7E87DC02C07C65C00C32367 /* resources */ = { isa = PBXGroup; children = ( @@ -103,14 +99,6 @@ path = resources; sourceTree = ""; }; - E6585D6045A189966C133BD8 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 8116446C19FDC139F2B56F5C /* libPods-LLMVoiceAssistantDemo.a */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -118,12 +106,9 @@ isa = PBXNativeTarget; buildConfigurationList = 02A11954268D39AB00A2AC99 /* Build configuration list for PBXNativeTarget "LLMVoiceAssistantDemo" */; buildPhases = ( - C54BB0EBC41CA3C7A3CD997F /* [CP] Check Pods Manifest.lock */, 02A11941268D39A700A2AC99 /* Sources */, 02A11942268D39A700A2AC99 /* Frameworks */, 02A11943268D39A700A2AC99 /* Resources */, - 466DD26F1FA12E383AC5E702 /* [CP] Embed Pods Frameworks */, - ABFE6A8B8F163462392CE190 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -158,6 +143,13 @@ Base, ); mainGroup = 02A1193C268D39A700A2AC99; + packageReferences = ( + 34C504CB2D2719480003405B /* XCRemoteSwiftPackageReference "porcupine" */, + 34C504CC2D2719A30003405B /* XCRemoteSwiftPackageReference "orca" */, + 34C504CD2D271A440003405B /* XCRemoteSwiftPackageReference "cheetah" */, + 34C504D12D271E4B0003405B /* XCRemoteSwiftPackageReference "ios-voice-processor" */, + 34C504D42D271E6B0003405B /* XCRemoteSwiftPackageReference "picollm" */, + ); productRefGroup = 02A11946268D39A700A2AC99 /* Products */; projectDirPath = ""; projectRoot = ""; @@ -180,65 +172,6 @@ }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - 466DD26F1FA12E383AC5E702 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-LLMVoiceAssistantDemo/Pods-LLMVoiceAssistantDemo-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-LLMVoiceAssistantDemo/Pods-LLMVoiceAssistantDemo-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-LLMVoiceAssistantDemo/Pods-LLMVoiceAssistantDemo-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - ABFE6A8B8F163462392CE190 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-LLMVoiceAssistantDemo/Pods-LLMVoiceAssistantDemo-resources-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Copy Pods Resources"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-LLMVoiceAssistantDemo/Pods-LLMVoiceAssistantDemo-resources-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-LLMVoiceAssistantDemo/Pods-LLMVoiceAssistantDemo-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - C54BB0EBC41CA3C7A3CD997F /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-LLMVoiceAssistantDemo-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ 02A11941268D39A700A2AC99 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -377,7 +310,6 @@ }; 02A11955268D39AB00A2AC99 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 505D746A281AD13F6F6D5D11 /* Pods-LLMVoiceAssistantDemo.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -401,7 +333,6 @@ }; 02A11956268D39AB00A2AC99 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 42D19EE4769392460A93BB89 /* Pods-LLMVoiceAssistantDemo.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -445,6 +376,90 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + 34C504CB2D2719480003405B /* XCRemoteSwiftPackageReference "porcupine" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/picovoice/porcupine"; + requirement = { + kind = exactVersion; + version = 3.0.4; + }; + }; + 34C504CC2D2719A30003405B /* XCRemoteSwiftPackageReference "orca" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/picovoice/orca"; + requirement = { + kind = exactVersion; + version = 1.0.1; + }; + }; + 34C504CD2D271A440003405B /* XCRemoteSwiftPackageReference "cheetah" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/picovoice/cheetah"; + requirement = { + kind = exactVersion; + version = 2.1.0; + }; + }; + 34C504CE2D271C5E0003405B /* XCRemoteSwiftPackageReference "ios-voice-processor" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/picovoice/ios-voice-processor"; + requirement = { + kind = exactVersion; + version = 1.2.0; + }; + }; + 34C504D12D271E4B0003405B /* XCRemoteSwiftPackageReference "ios-voice-processor" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/picovoice/ios-voice-processor"; + requirement = { + kind = exactVersion; + version = 1.2.0; + }; + }; + 34C504D42D271E6B0003405B /* XCRemoteSwiftPackageReference "picollm" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/picovoice/picollm"; + requirement = { + kind = exactVersion; + version = 1.2.4; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 34C504CF2D271C5E0003405B /* ios_voice_processor */ = { + isa = XCSwiftPackageProductDependency; + package = 34C504CE2D271C5E0003405B /* XCRemoteSwiftPackageReference "ios-voice-processor" */; + productName = ios_voice_processor; + }; + 34C504D22D271E4B0003405B /* ios_voice_processor */ = { + isa = XCSwiftPackageProductDependency; + package = 34C504D12D271E4B0003405B /* XCRemoteSwiftPackageReference "ios-voice-processor" */; + productName = ios_voice_processor; + }; + 34C504D52D2728300003405B /* Porcupine */ = { + isa = XCSwiftPackageProductDependency; + package = 34C504CB2D2719480003405B /* XCRemoteSwiftPackageReference "porcupine" */; + productName = Porcupine; + }; + 34C504D72D2728410003405B /* Cheetah */ = { + isa = XCSwiftPackageProductDependency; + package = 34C504CD2D271A440003405B /* XCRemoteSwiftPackageReference "cheetah" */; + productName = Cheetah; + }; + 34CE2DE12D27286800AC10F0 /* PicoLLM */ = { + isa = XCSwiftPackageProductDependency; + package = 34C504D42D271E6B0003405B /* XCRemoteSwiftPackageReference "picollm" */; + productName = PicoLLM; + }; + 34CE2DE32D27287900AC10F0 /* Orca */ = { + isa = XCSwiftPackageProductDependency; + package = 34C504CC2D2719A30003405B /* XCRemoteSwiftPackageReference "orca" */; + productName = Orca; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 02A1193D268D39A700A2AC99 /* Project object */; } diff --git a/recipes/llm-voice-assistant/ios/LLMVoiceAssistantDemo/AudioPlayerStream.swift b/recipes/llm-voice-assistant/ios/LLMVoiceAssistantDemo/AudioPlayerStream.swift index 36ed130..03122f0 100644 --- a/recipes/llm-voice-assistant/ios/LLMVoiceAssistantDemo/AudioPlayerStream.swift +++ b/recipes/llm-voice-assistant/ios/LLMVoiceAssistantDemo/AudioPlayerStream.swift @@ -95,5 +95,6 @@ class AudioPlayerStream { func stopStreamPCM() { isStopped = true pcmBuffers.removeAll() + playerNode.stop() } } diff --git a/recipes/llm-voice-assistant/ios/LLMVoiceAssistantDemo/ViewModel.swift b/recipes/llm-voice-assistant/ios/LLMVoiceAssistantDemo/ViewModel.swift index b0133e5..78a979c 100644 --- a/recipes/llm-voice-assistant/ios/LLMVoiceAssistantDemo/ViewModel.swift +++ b/recipes/llm-voice-assistant/ios/LLMVoiceAssistantDemo/ViewModel.swift @@ -14,6 +14,7 @@ import Orca import ios_voice_processor import Combine +import Foundation enum ChatState { case WAKEWORD @@ -322,6 +323,7 @@ You can download directly to your device or airdrop from a Mac. let keywordIndex = try self.porcupine!.process(pcm: frame) if keywordIndex == 0 { DispatchQueue.main.async { [self] in + self.interrupt() statusText = "Listening..." chatText.append(Message(speaker: "You:", msg: "")) chatState = .STT @@ -346,7 +348,7 @@ You can download directly to your device or airdrop from a Mac. } if endpoint { DispatchQueue.main.async { [self] in - statusText = "Generating, Say `Picovoice` to interrupt" + statusText = "Generating...\nSay `Picovoice` to interrupt" chatState = .GENERATE self.generate() } diff --git a/recipes/llm-voice-assistant/ios/LLMVoiceAssistantDemo/resources/cheetah_params.pv b/recipes/llm-voice-assistant/ios/LLMVoiceAssistantDemo/resources/cheetah_params.pv index 15e2bd9..b18a3d5 100644 Binary files a/recipes/llm-voice-assistant/ios/LLMVoiceAssistantDemo/resources/cheetah_params.pv and b/recipes/llm-voice-assistant/ios/LLMVoiceAssistantDemo/resources/cheetah_params.pv differ diff --git a/recipes/llm-voice-assistant/ios/Podfile b/recipes/llm-voice-assistant/ios/Podfile deleted file mode 100644 index 4cd5094..0000000 --- a/recipes/llm-voice-assistant/ios/Podfile +++ /dev/null @@ -1,10 +0,0 @@ -source 'https://cdn.cocoapods.org/' -platform :ios, '16.0' - -target 'LLMVoiceAssistantDemo' do - pod 'Porcupine-iOS', '~> 3.0.1' - pod 'Cheetah-iOS', '~> 2.0.0' - pod 'picoLLM-iOS', '~> 1.2.0' - pod 'Orca-iOS', '~> 1.0.0' - pod 'ios-voice-processor', '~> 1.1.0' -end diff --git a/recipes/llm-voice-assistant/ios/Podfile.lock b/recipes/llm-voice-assistant/ios/Podfile.lock deleted file mode 100644 index f0a71c0..0000000 --- a/recipes/llm-voice-assistant/ios/Podfile.lock +++ /dev/null @@ -1,33 +0,0 @@ -PODS: - - Cheetah-iOS (2.0.0) - - ios-voice-processor (1.1.2) - - Orca-iOS (1.0.0) - - picoLLM-iOS (1.2.0) - - Porcupine-iOS (3.0.2): - - ios-voice-processor (~> 1.1.1) - -DEPENDENCIES: - - Cheetah-iOS (~> 2.0.0) - - ios-voice-processor (~> 1.1.0) - - Orca-iOS (~> 1.0.0) - - picoLLM-iOS (~> 1.2.0) - - Porcupine-iOS (~> 3.0.1) - -SPEC REPOS: - trunk: - - Cheetah-iOS - - ios-voice-processor - - Orca-iOS - - picoLLM-iOS - - Porcupine-iOS - -SPEC CHECKSUMS: - Cheetah-iOS: d98a5edcbf3b74dda6027aeac6a8c0f5997a47a2 - ios-voice-processor: 00bf226d172c7006f565d6b6dbf2dc5e5b76938b - Orca-iOS: d50a0dbbf596f20c6c2e2f727f20f72ac012aa0e - picoLLM-iOS: 9ff6baa0b9e577d99491f4fa63f898a16fc6925c - Porcupine-iOS: b8408a28fe3df81ea8d8f3cf1e5a04823ffb71d3 - -PODFILE CHECKSUM: da00234d72f8294a9db6b2710dde5563485a00e9 - -COCOAPODS: 1.15.2 diff --git a/recipes/llm-voice-assistant/ios/README.md b/recipes/llm-voice-assistant/ios/README.md index e0f0018..cf8bb44 100644 --- a/recipes/llm-voice-assistant/ios/README.md +++ b/recipes/llm-voice-assistant/ios/README.md @@ -27,21 +27,15 @@ Copy your model file to the device. ## Usage -1. Install the dependencies using `CocoaPods`: +1. Open the `LLMVoiceAssistantDemo.xcodeproj` in XCode -```console -pod install -``` +2. Replace `let ACCESS_KEY = "${YOUR_ACCESS_KEY_HERE}"` in the file [VieModel.swift](./LLMVoiceAssistantDemo/ViewModel.swift) with your AccessKey obtained from [Picovoice Console](https://console.picovoice.ai/). -2. Open the `LLMVoiceAssistantDemo.xcworkspace` in XCode +3. Build and run the project on your device. -3. Replace `let ACCESS_KEY = "${YOUR_ACCESS_KEY_HERE}"` in the file [VieModel.swift](./LLMVoiceAssistantDemo/ViewModel.swift) with your AccessKey obtained from [Picovoice Console](https://console.picovoice.ai/). +4. Press the `Load Model` button and load the model file from your device's storage. -4. Build and run the project on your device. - -5. Press the `Load Model` button and load the model file from your device's storage. - -6. Say "Picovoice", then speak to the voice assistant! +5. Say "Picovoice", then speak to the voice assistant! ## Custom Wake Word diff --git a/recipes/llm-voice-assistant/web/public/models/cheetah_params.pv b/recipes/llm-voice-assistant/web/public/models/cheetah_params.pv index 15e2bd9..b18a3d5 100644 Binary files a/recipes/llm-voice-assistant/web/public/models/cheetah_params.pv and b/recipes/llm-voice-assistant/web/public/models/cheetah_params.pv differ diff --git a/res/.lint/spell-check/dict.txt b/res/.lint/spell-check/dict.txt index 7dcd90d..8bab457 100644 --- a/res/.lint/spell-check/dict.txt +++ b/res/.lint/spell-check/dict.txt @@ -38,4 +38,5 @@ subwin tock tock WAKEWORD +xcodeproj xcworkspace