diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 714bff14d7..eea0e2a0f7 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -65,7 +65,7 @@ body: - Web (WASM) - Linux (x86_64) - macOS (x86_64, arm64) - - Windows (x86_64) + - Windows (x86_64, arm64) - Raspberry Pi - ARM Cortex-M validations: diff --git a/.github/workflows/c-demos.yml b/.github/workflows/c-demos.yml index 396c082870..63b50b1e4b 100644 --- a/.github/workflows/c-demos.yml +++ b/.github/workflows/c-demos.yml @@ -66,7 +66,7 @@ jobs: strategy: matrix: - machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, rpi5-64] + machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, rpi5-64, pv-windows-arm64] steps: - uses: actions/checkout@v3 @@ -123,7 +123,8 @@ jobs: strategy: matrix: - machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, rpi5-64] + machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, rpi5-64, pv-windows-arm64] + make_file: "Unix Makefiles" include: - machine: rpi3-32 platform: raspberry-pi @@ -140,6 +141,10 @@ jobs: - machine: rpi5-64 platform: raspberry-pi arch: cortex-a76-aarch64 + - machine: pv-windows-arm64 + platfrom: windows + arch: arm64 + make_file: "MinGW Makefiles" steps: - uses: actions/checkout@v3 @@ -147,7 +152,7 @@ jobs: submodules: recursive - name: Create build directory - run: cmake -B ./build + run: cmake -G "${{ matrix.make_file }}" -B ./build - name: Build filedemo run: cmake --build ./build --target porcupine_demo_file diff --git a/.github/workflows/dotnet-demos.yml b/.github/workflows/dotnet-demos.yml index b56519c618..c6e99c110d 100644 --- a/.github/workflows/dotnet-demos.yml +++ b/.github/workflows/dotnet-demos.yml @@ -56,7 +56,7 @@ jobs: strategy: matrix: - machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, rpi5-64] + machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, rpi5-64, pv-windows-arm64] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 7e2013db15..5ebbd50022 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -105,7 +105,7 @@ jobs: strategy: matrix: - machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, rpi5-32, rpi5-64] + machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, rpi5-32, rpi5-64, pv-windows-arm64] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/java-demos.yml b/.github/workflows/java-demos.yml index 3a8a0af058..aec700eb2f 100644 --- a/.github/workflows/java-demos.yml +++ b/.github/workflows/java-demos.yml @@ -47,7 +47,7 @@ jobs: strategy: matrix: - machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, rpi5-64] + machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, rpi5-64, pv-windows-arm64] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/java-perf.yml b/.github/workflows/java-perf.yml index 4f684b85df..4e18954a75 100644 --- a/.github/workflows/java-perf.yml +++ b/.github/workflows/java-perf.yml @@ -99,3 +99,24 @@ jobs: - name: Machine state after working-directory: resources/scripts run: bash machine-state.sh + + perf-windows-arm64: + runs-on: ${{ matrix.machine }} + + strategy: + fail-fast: false + matrix: + machine: [pv-windows-arm64] + include: + - machine: pv-windws-arm64 + num_test_iterations: 50 + performance_threshold_sec: 0.5 + + steps: + - uses: actions/checkout@v3 + + - name: Build + run: ./gradlew assemble + + - name: Test + run: ./gradlew test --info --tests PorcupinePerformanceTest -DpvTestingAccessKey="${{secrets.PV_VALID_ACCESS_KEY}}" -DnumTestIterations="${{matrix.num_test_iterations}}" -DperformanceThresholdSec="${{matrix.performance_threshold_sec}}" diff --git a/.github/workflows/java.yml b/.github/workflows/java.yml index 3fdbea7347..e3020374dc 100644 --- a/.github/workflows/java.yml +++ b/.github/workflows/java.yml @@ -63,7 +63,7 @@ jobs: strategy: matrix: - machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, rpi5-64] + machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, rpi5-64, pv-windows-arm64] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/nodejs-demos.yml b/.github/workflows/nodejs-demos.yml index 6ffbbfa158..fc92ad7b55 100644 --- a/.github/workflows/nodejs-demos.yml +++ b/.github/workflows/nodejs-demos.yml @@ -39,6 +39,14 @@ jobs: with: node-version: ${{ matrix.node-version }} + # ************ REMOVE AFTER RELEASE *************** + - name: build local binding + run: | + yarn install + yarn build + working-directory: binding/nodejs + # ************ REMOVE AFTER RELEASE *************** + - name: Install dependencies run: yarn install @@ -50,11 +58,19 @@ jobs: strategy: matrix: - machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, rpi5-64] + machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, rpi5-64, pv-windows-arm64] steps: - uses: actions/checkout@v3 + # ************ REMOVE AFTER RELEASE *************** + - name: build local binding + run: | + yarn install + yarn build + working-directory: binding/nodejs + # ************ REMOVE AFTER RELEASE *************** + - name: Install dependencies run: yarn install diff --git a/.github/workflows/nodejs-perf.yml b/.github/workflows/nodejs-perf.yml index dfb552e9e6..c91708c666 100644 --- a/.github/workflows/nodejs-perf.yml +++ b/.github/workflows/nodejs-perf.yml @@ -103,3 +103,27 @@ jobs: - name: Machine state after working-directory: resources/scripts run: bash machine-state.sh + + performance-windows-arm64: + runs-on: ${{ matrix.machine }} + + strategy: + fail-fast: false + matrix: + machine: [pv-windows-arm64] + include: + - machine: pv-windows-arm64 + num_test_iterations: 50 + performance_threshold_sec: 0.5 + + steps: + - uses: actions/checkout@v3 + + - name: Pre-build dependencies + run: npm install --global yarn + + - name: Install dependencies + run: yarn install + + - name: Test + run: yarn test test/perf.test.ts --access_key=${{secrets.PV_VALID_ACCESS_KEY}} --num_test_iterations=${{matrix.num_test_iterations}} --performance_threshold_sec=${{matrix.performance_threshold_sec}} diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 823372afb0..ba81ef4c37 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -66,7 +66,7 @@ jobs: strategy: matrix: - machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, rpi5-64] + machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, rpi5-64, pv-windows-arm64] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/python-demos.yml b/.github/workflows/python-demos.yml index 72d077f055..d93ef628ea 100644 --- a/.github/workflows/python-demos.yml +++ b/.github/workflows/python-demos.yml @@ -39,6 +39,14 @@ jobs: - name: Pre-build dependencies run: python -m pip install --upgrade pip + # ************ REMOVE AFTER RELEASE *************** + - name: build local binding + run: | + python3 -m pip install setuptools wheel + python3 -m setup sdist bdist_wheel + working-directory: binding/python + # ************ REMOVE AFTER RELEASE *************** + - name: Install dependencies run: pip install -r requirements.txt @@ -50,11 +58,19 @@ jobs: strategy: matrix: - machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, rpi5-64] + machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, rpi5-64, pv-windows-arm64] steps: - uses: actions/checkout@v3 + # ************ REMOVE AFTER RELEASE *************** + - name: build local binding + run: | + python3 -m pip install setuptools wheel + python3 -m setup sdist bdist_wheel + working-directory: binding/python + # ************ REMOVE AFTER RELEASE *************** + - name: Install dependencies run: pip3 install -r requirements.txt diff --git a/.github/workflows/python-perf.yml b/.github/workflows/python-perf.yml index 0699c18849..b111912951 100644 --- a/.github/workflows/python-perf.yml +++ b/.github/workflows/python-perf.yml @@ -100,3 +100,21 @@ jobs: - name: Machine state after working-directory: resources/scripts run: bash machine-state.sh + + perf-windows-arm64: + runs-on: ${{ matrix.machine }} + + strategy: + fail-fast: false + matrix: + machine: [pv-windows-arm64] + include: + - machine: pv-windows-arm64 + num_test_iterations: 50 + performance_threshold_sec: 0.5 + + steps: + - uses: actions/checkout@v3 + + - name: Test + run: python3 test_porcupine_perf.py ${{secrets.PV_VALID_ACCESS_KEY}} ${{matrix.num_test_iterations}} ${{matrix.performance_threshold_sec}} diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index 93f16655b1..eef546666a 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -70,7 +70,7 @@ jobs: strategy: matrix: - machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, rpi5-64] + machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, rpi5-64, pv-windows-arm64] steps: - uses: actions/checkout@v3 diff --git a/README.md b/README.md index c00a91f02d..4130ef465e 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ applications. It is - Raspberry Pi (Zero, 3, 4, 5) - Android and iOS - Chrome, Safari, Firefox, and Edge - - Linux (x86_64), macOS (x86_64, arm64), and Windows (x86_64) + - Linux (x86_64), macOS (x86_64, arm64), and Windows (x86_64, arm64) - scalable. It can detect multiple always-listening voice commands with no added runtime footprint. - self-service. Developers can train custom wake word models using [Picovoice Console](https://console.picovoice.ai/). diff --git a/binding/dotnet/Porcupine/Porcupine.csproj b/binding/dotnet/Porcupine/Porcupine.csproj index d9b0a126c3..51ad01c974 100644 --- a/binding/dotnet/Porcupine/Porcupine.csproj +++ b/binding/dotnet/Porcupine/Porcupine.csproj @@ -2,7 +2,7 @@ net8.0;net6.0;netcoreapp3.0;netstandard2.0 - 3.0.4 + 3.0.5 Picovoice Porcupine Wake Word Engine @@ -58,6 +58,16 @@ lib\windows\amd64\libpv_porcupine.dll false + + + build/netcoreapp3.0/lib/windows/arm64/libpv_porcupine.dll; + build/net6.0/lib/windows/arm64/libpv_porcupine.dll; + build/net8.0/lib/windows/arm64/libpv_porcupine.dll; + + PreserveNewest + lib\windows\arm64\libpv_porcupine.dll + false + build/netstandard2.0/libpv_porcupine.so; diff --git a/binding/dotnet/Porcupine/Utils.cs b/binding/dotnet/Porcupine/Utils.cs index f5f3fcb4ad..91040723d2 100644 --- a/binding/dotnet/Porcupine/Utils.cs +++ b/binding/dotnet/Porcupine/Utils.cs @@ -55,6 +55,10 @@ public static string PvLibraryPath(string libName) { return Path.Combine(AppContext.BaseDirectory, $"lib/{_env}/amd64/{libName}.dll"); } + else if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && _arch == Architecture.Arm64) + { + return Path.Combine(AppContext.BaseDirectory, $"lib/{_env}/arm64/{libName}.dll"); + } if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) && _arch == Architecture.X64) { return Path.Combine(AppContext.BaseDirectory, $"lib/{_env}/x86_64/{libName}.dylib"); diff --git a/binding/dotnet/README.md b/binding/dotnet/README.md index a1d7cd4442..f52bb3704a 100644 --- a/binding/dotnet/README.md +++ b/binding/dotnet/README.md @@ -22,13 +22,13 @@ Porcupine is: Platform compatible with .NET Framework 4.6.1+: -- Windows (x86_64) +- Windows (x86_64, arm64) Platforms compatible with .NET Core 2.0+: - Linux (x86_64) - macOS (x86_64) -- Windows (x86_64) +- Windows (x86_64, arm64) Platforms compatible with .NET Core 3.0+: diff --git a/binding/java/README.md b/binding/java/README.md index d1e145f466..98cbd09639 100644 --- a/binding/java/README.md +++ b/binding/java/README.md @@ -24,7 +24,7 @@ To learn more about Porcupine, see the [product](https://picovoice.ai/products/p - Linux (x86_64) - macOS (x86_64, arm64) -- Windows (x86_64) +- Windows (x86_64, arm64) - Raspberry Pi 3 (32 and 64 bit), Raspberry Pi 4 (32 and 64 bit), Raspberry Pi 5 (32 and 64 bit) ## Installation diff --git a/binding/java/build.gradle b/binding/java/build.gradle index 528a3b7411..fd6860fee1 100644 --- a/binding/java/build.gradle +++ b/binding/java/build.gradle @@ -8,7 +8,7 @@ plugins { ext { PUBLISH_GROUP_ID = 'ai.picovoice' - PUBLISH_VERSION = '3.0.3' + PUBLISH_VERSION = '3.0.4' PUBLISH_ARTIFACT_ID = 'porcupine-java' } @@ -124,7 +124,10 @@ task copyMacLib(type: Copy) { into "${outputDir}/porcupine/lib/java/mac/" } task copyWindowsLib(type: Copy) { - from('../../lib/java/windows/amd64/pv_porcupine_jni.dll') into "${outputDir}/porcupine/lib/java/windows/amd64/" + from('../../lib/java/windows/') + include('amd64/pv_porcupine_jni.dll', + 'arm64/pv_porcupine_jni.dll') + into "${outputDir}/porcupine/lib/java/windows/" } task copyRPiLib(type: Copy) { from('../../lib/java/raspberry-pi/') diff --git a/binding/java/gradle/wrapper/gradle-wrapper.properties b/binding/java/gradle/wrapper/gradle-wrapper.properties index d2880ba800..d6e308a637 100644 --- a/binding/java/gradle/wrapper/gradle-wrapper.properties +++ b/binding/java/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/binding/java/src/ai/picovoice/porcupine/Utils.java b/binding/java/src/ai/picovoice/porcupine/Utils.java index e349b1ebd2..29cd95f104 100644 --- a/binding/java/src/ai/picovoice/porcupine/Utils.java +++ b/binding/java/src/ai/picovoice/porcupine/Utils.java @@ -163,6 +163,8 @@ private static String getArchitecture() throws RuntimeException { } else if (ENVIRONMENT_NAME.equals("windows")) { if (isX86_64) { return "amd64"; + } else if (isArm) { + return "arm64"; } } else if (ENVIRONMENT_NAME.equals("linux")) { if (isX86_64) { @@ -242,7 +244,9 @@ public static String getPackagedLibraryPath() { switch (ENVIRONMENT_NAME) { case "windows": return RESOURCE_DIRECTORY - .resolve("lib/java/windows/amd64/pv_porcupine_jni.dll") + .resolve("lib/java/windows") + .resolve(ARCHITECTURE) + .resolve("pv_porcupine_jni.dll") .toString(); case "mac": return RESOURCE_DIRECTORY.resolve("lib/java/mac") diff --git a/binding/nodejs/README.md b/binding/nodejs/README.md index d3cca78dd1..c9d0a85b5d 100644 --- a/binding/nodejs/README.md +++ b/binding/nodejs/README.md @@ -25,7 +25,7 @@ Unlike the built-in keywords, custom PPN files generated with the Picovoice Cons This binding is for running Porcupine on **Node.js 16+** on the following platforms: -- Windows (x86_64) +- Windows (x86_64, arm64) - Linux (x86_64) - macOS (x86_64, arm64) - Raspberry Pi (3, 4, 5) diff --git a/binding/nodejs/package.json b/binding/nodejs/package.json index 0950dd041f..4100ef73de 100644 --- a/binding/nodejs/package.json +++ b/binding/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@picovoice/porcupine-node", - "version": "3.0.4", + "version": "3.0.5", "description": "Picovoice Porcupine Node.js binding", "main": "dist/index.js", "types": "dist/types/index.d.ts", diff --git a/binding/nodejs/src/platforms.ts b/binding/nodejs/src/platforms.ts index 46c242ff59..85d7874e53 100644 --- a/binding/nodejs/src/platforms.ts +++ b/binding/nodejs/src/platforms.ts @@ -76,6 +76,10 @@ SYSTEM_TO_LIBRARY_PATH.set( `${SYSTEM_WINDOWS}/${X86_64}`, `${PLATFORM_WINDOWS}/amd64/pv_porcupine.node` ); +SYSTEM_TO_LIBRARY_PATH.set( + `${SYSTEM_WINDOWS}/${ARM_64}`, + `${PLATFORM_WINDOWS}/arm64/pv_porcupine.node` +); function absoluteLibraryPath(libraryPath: string): string { return path.resolve(__dirname, LIBRARY_PATH_PREFIX, libraryPath); @@ -127,7 +131,7 @@ export function getPlatform(): string { return PLATFORM_MAC; } - if (system === SYSTEM_WINDOWS && arch === X86_64) { + if (system === SYSTEM_WINDOWS && (arch === X86_64 || arch === ARM_64)) { return PLATFORM_WINDOWS; } @@ -175,9 +179,9 @@ export function getSystemLibraryPath(): string { } break; case SYSTEM_WINDOWS: - if (arch === X86_64) { + if (arch === X86_64 || arch === ARM_64) { return absoluteLibraryPath( - SYSTEM_TO_LIBRARY_PATH.get(`${SYSTEM_WINDOWS}/${X86_64}`) + SYSTEM_TO_LIBRARY_PATH.get(`${SYSTEM_WINDOWS}/${arch}`) ); } break; diff --git a/binding/python/README.md b/binding/python/README.md index 3c7be8c386..8e14cc49b3 100644 --- a/binding/python/README.md +++ b/binding/python/README.md @@ -19,7 +19,7 @@ applications. It is ## Compatibility - Python 3.8+ -- Runs on Linux (x86_64), macOS (x86_64 and arm64), Windows (x86_64), and Raspberry Pi (Zero, 3, 4, 5). +- Runs on Linux (x86_64), macOS (x86_64 and arm64), Windows (x86_64, arm64), and Raspberry Pi (Zero, 3, 4, 5). ## Installation diff --git a/binding/python/_util.py b/binding/python/_util.py index 54c0281f99..5aa7059487 100644 --- a/binding/python/_util.py +++ b/binding/python/_util.py @@ -96,7 +96,10 @@ def pv_library_path(relative): relative, 'lib/raspberry-pi/%s/libpv_porcupine.so' % _PV_MACHINE) elif _PV_SYSTEM == 'Windows': - return os.path.join(os.path.dirname(__file__), relative, 'lib/windows/amd64/libpv_porcupine.dll') + if _PV_MACHINE.lower() == 'amd64': + return os.path.join(os.path.dirname(__file__), relative, 'lib/windows/amd64/libpv_porcupine.dll') + elif _PV_MACHINE.lower() == 'arm64': + return os.path.join(os.path.dirname(__file__), relative, 'lib/windows/arm64/libpv_porcupine.dll') raise NotImplementedError('Unsupported platform.') diff --git a/binding/python/setup.py b/binding/python/setup.py index d354ba2508..33ae7809d0 100644 --- a/binding/python/setup.py +++ b/binding/python/setup.py @@ -51,6 +51,7 @@ include pvporcupine/lib/mac/arm64/libpv_porcupine.dylib recursive-include pvporcupine/lib/raspberry-pi * include pvporcupine/lib/windows/amd64/libpv_porcupine.dll +include pvporcupine/lib/windows/arm64/libpv_porcupine.dll recursive-include pvporcupine/resources/keyword_files/linux * recursive-include pvporcupine/resources/keyword_files/mac/ * recursive-include pvporcupine/resources/keyword_files/raspberry-pi * @@ -65,7 +66,7 @@ setuptools.setup( name="pvporcupine", - version="3.0.3", + version="3.0.4", author="Picovoice", author_email="hello@picovoice.ai", description="Porcupine wake word engine.", diff --git a/demo/dotnet/PorcupineDemo/PorcupineDemo.csproj b/demo/dotnet/PorcupineDemo/PorcupineDemo.csproj index fb360d1496..5929334130 100644 --- a/demo/dotnet/PorcupineDemo/PorcupineDemo.csproj +++ b/demo/dotnet/PorcupineDemo/PorcupineDemo.csproj @@ -19,7 +19,7 @@ - + diff --git a/demo/dotnet/README.md b/demo/dotnet/README.md index f43ea991ca..a647df27ef 100644 --- a/demo/dotnet/README.md +++ b/demo/dotnet/README.md @@ -24,7 +24,7 @@ Porcupine is: - Linux (x86_64) - macOS (x86_64, arm64) -- Windows (x86_64) +- Windows (x86_64, arm64) - Raspberry Pi: - 3 (32 and 64 bit) - 4 (32 and 64 bit) diff --git a/demo/java/README.md b/demo/java/README.md index 8340ca2300..1b8c6cf38b 100644 --- a/demo/java/README.md +++ b/demo/java/README.md @@ -25,7 +25,7 @@ To learn more about Porcupine, see the [product](https://picovoice.ai/products/p - Linux (x86_64) - macOS (x86_64, arm64) -- Windows (x86_64) +- Windows (x86_64, arm64) - Raspberry Pi 3 (32 and 64 bit), Raspberry Pi 4 (32 and 64 bit), Raspberry Pi 5 (32 and 64 bit) ## Installation diff --git a/demo/java/build.gradle b/demo/java/build.gradle index 2f6815e09e..ccb36b1a81 100644 --- a/demo/java/build.gradle +++ b/demo/java/build.gradle @@ -15,14 +15,14 @@ sourceSets { } dependencies { - implementation 'ai.picovoice:porcupine-java:3.0.3' + implementation 'ai.picovoice:porcupine-java:3.0.4' implementation 'commons-cli:commons-cli:1.4' } jar { manifest { attributes "Main-Class": "ai.picovoice.porcupinedemo.MicDemo", - "Class-Path" : "porcupine-3.0.3.jar;commons-cli-1.4.jar" + "Class-Path" : "porcupine-3.0.4.jar;commons-cli-1.4.jar" } from sourceSets.main.output exclude "**/FileDemo.class" @@ -33,7 +33,7 @@ jar { task fileDemoJar(type: Jar) { manifest { attributes "Main-Class": "ai.picovoice.porcupinedemo.FileDemo", - "Class-Path" : "porcupine-3.0.3.jar;commons-cli-1.4.jar" + "Class-Path" : "porcupine-3.0.4.jar;commons-cli-1.4.jar" } from sourceSets.main.output exclude "**/MicDemo.class" diff --git a/demo/java/gradle/wrapper/gradle-wrapper.properties b/demo/java/gradle/wrapper/gradle-wrapper.properties index d2880ba800..d6e308a637 100644 --- a/demo/java/gradle/wrapper/gradle-wrapper.properties +++ b/demo/java/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/demo/nodejs/README.md b/demo/nodejs/README.md index ed9695f1de..1b4438f0c7 100644 --- a/demo/nodejs/README.md +++ b/demo/nodejs/README.md @@ -21,7 +21,7 @@ To learn more about Porcupine, see the [product](https://picovoice.ai/products/p These demos run Porcupine on **Node.js 12+** on the following platforms: -- Windows (x86_64) +- Windows (x86_64, arm64) - Linux (x86_64) - macOS (x86_64, arm64) - Raspberry Pi (3, 4, 5) diff --git a/demo/nodejs/package.json b/demo/nodejs/package.json index 31cf65bfa4..d62042e7c6 100644 --- a/demo/nodejs/package.json +++ b/demo/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@picovoice/porcupine-node-demo", - "version": "3.0.4", + "version": "3.0.5", "description": "Picovoice Porcupine Node.js file-based and microphone demos", "scripts": { "file": "node file.js", @@ -16,7 +16,7 @@ "author": "Picovoice, Inc.", "license": "Apache-2.0", "dependencies": { - "@picovoice/porcupine-node": "~3.0.4", + "@picovoice/porcupine-node": "../../binding/nodejs", "@picovoice/pvrecorder-node": "~1.2.2", "commander": "^6.1.0", "wavefile": "^11.0.0" diff --git a/demo/python/README.md b/demo/python/README.md index 61fd215a98..88875329fa 100644 --- a/demo/python/README.md +++ b/demo/python/README.md @@ -18,7 +18,7 @@ applications. It is ## Compatibility - Python 3.8+ -- Runs on Linux (x86_64), Mac (x86_64 and arm64), Windows (x86_64), and Raspberry Pi (Zero, 3, 4, 5). +- Runs on Linux (x86_64), Mac (x86_64 and arm64), Windows (x86_64, arm64), and Raspberry Pi (Zero, 3, 4, 5). ## Installation diff --git a/demo/python/requirements.txt b/demo/python/requirements.txt index e1c24b35f7..6c82edac08 100644 --- a/demo/python/requirements.txt +++ b/demo/python/requirements.txt @@ -1,2 +1,2 @@ -pvporcupine==3.0.3 +../../binding/python/dist/pvporcupine-3.0.4-py3-none-any.whl pvrecorder==1.2.2 diff --git a/demo/python/setup.py b/demo/python/setup.py index fc2744469c..25a7d12319 100644 --- a/demo/python/setup.py +++ b/demo/python/setup.py @@ -28,7 +28,7 @@ setuptools.setup( name="pvporcupinedemo", - version="3.0.3", + version="3.0.4", author="Picovoice", author_email="hello@picovoice.ai", description="Porcupine wake word engine demos", @@ -36,7 +36,7 @@ long_description_content_type="text/markdown", url="https://github.com/Picovoice/porcupine", packages=["pvporcupinedemo"], - install_requires=["pvporcupine==3.0.3", "pvrecorder==1.2.2"], + install_requires=["pvporcupine==3.0.4", "pvrecorder==1.2.2"], include_package_data=True, classifiers=[ "Development Status :: 5 - Production/Stable", diff --git a/demo/respeaker/README.md b/demo/respeaker/README.md index 5be4c503a3..9e7b1eb023 100644 --- a/demo/respeaker/README.md +++ b/demo/respeaker/README.md @@ -16,7 +16,7 @@ applications. It is - Raspberry Pi (3, 4, 5) - Android and iOS - Chrome, Safari, Firefox, and Edge - - Linux (x86_64), macOS (x86_64, arm64), and Windows (x86_64) + - Linux (x86_64), macOS (x86_64, arm64), and Windows (x86_64, arm64) - scalable. It can detect multiple always-listening voice commands with no added runtime footprint. - self-service. Developers can train custom wake word models using [Picovoice Console](https://console.picovoice.ai/). diff --git a/lib/java/windows/arm64/pv_porcupine_jni.dll b/lib/java/windows/arm64/pv_porcupine_jni.dll new file mode 100644 index 0000000000..ad761d31f2 Binary files /dev/null and b/lib/java/windows/arm64/pv_porcupine_jni.dll differ diff --git a/lib/node/windows/arm64/pv_porcupine.node b/lib/node/windows/arm64/pv_porcupine.node new file mode 100644 index 0000000000..91e37c3397 Binary files /dev/null and b/lib/node/windows/arm64/pv_porcupine.node differ diff --git a/lib/windows/arm64/libpv_porcupine.dll b/lib/windows/arm64/libpv_porcupine.dll new file mode 100644 index 0000000000..f22130bc2d Binary files /dev/null and b/lib/windows/arm64/libpv_porcupine.dll differ