diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index fd0a20b..dd0f76d 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -50,7 +50,7 @@ body: options: - Linux (x86_64) - macOS (x86_64, arm64) - - Windows (x86_64) + - Windows (x86_64, arm64) - Raspberry Pi validations: required: true diff --git a/.github/workflows/c-demos.yml b/.github/workflows/c-demos.yml index 5220740..3c3f7ed 100644 --- a/.github/workflows/c-demos.yml +++ b/.github/workflows/c-demos.yml @@ -80,6 +80,7 @@ jobs: strategy: matrix: machine: [ rpi3-32, rpi3-64, rpi4-32, rpi4-64, rpi5-64 ] + make_file: ["Unix Makefiles"] include: - machine: rpi3-32 platform: raspberry-pi @@ -96,6 +97,10 @@ jobs: - machine: rpi5-64 platform: raspberry-pi arch: cortex-a76-aarch64 + - machine: pv-windows-arm64 + platform: windows + arch: arm64 + make_file: "MinGW Makefiles" steps: - uses: actions/checkout@v3 @@ -103,7 +108,7 @@ jobs: submodules: recursive - name: Create build directory - run: cmake -B ./build + run: cmake -G "${{ matrix.make_file }}" -B ./build - name: Build demo run: cmake --build ./build --target falcon_demo diff --git a/.github/workflows/python-demos.yml b/.github/workflows/python-demos.yml index 66d02eb..16795d1 100644 --- a/.github/workflows/python-demos.yml +++ b/.github/workflows/python-demos.yml @@ -50,7 +50,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-perf.yml b/.github/workflows/python-perf.yml index 82f31c0..7ea82c0 100644 --- a/.github/workflows/python-perf.yml +++ b/.github/workflows/python-perf.yml @@ -106,3 +106,30 @@ 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 + performance_threshold_sec: 1.8 + + steps: + - uses: actions/checkout@v3 + + - name: Pre-build dependencies + run: python3 -m pip install --upgrade pip + + - name: Install dependencies + run: pip install -r requirements.txt + + - name: Test + run: > + python3 test_falcon_perf.py + --access-key ${{secrets.PV_VALID_ACCESS_KEY}} + --num-test-iterations 20 + --performance-threshold-sec ${{matrix.performance_threshold_sec}} diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index 1b6f42e..5340ea0 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -64,7 +64,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 b206954..0c697a0 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Falcon is an on-device speaker diarization engine. Falcon is: - Private; All voice processing runs locally. - Cross-Platform: - - Linux (x86_64), macOS (x86_64, arm64), Windows (x86_64) + - Linux (x86_64), macOS (x86_64, arm64), Windows (x86_64, arm64) - Raspberry Pi (3, 4, 5) - Android and iOS - Chrome, Safari, Firefox, and Edge diff --git a/binding/python/README.md b/binding/python/README.md index 5fe6b2d..f0ed68d 100644 --- a/binding/python/README.md +++ b/binding/python/README.md @@ -8,13 +8,13 @@ Falcon is an on-device speaker diarization engine. Falcon is: - Private; All voice processing runs locally. - Cross-Platform: - - Linux (x86_64), macOS (x86_64, arm64), Windows (x86_64) + - Linux (x86_64), macOS (x86_64, arm64), Windows (x86_64, arm64) - Raspberry Pi (3, 4, 5) ## Compatibility - Python 3.8+ -- Runs on Linux (x86_64), macOS (x86_64, arm64), Windows (x86_64), and Raspberry Pi (3, 4, 5). +- Runs on Linux (x86_64), macOS (x86_64, arm64), Windows (x86_64, arm64), and Raspberry Pi (3, 4, 5). ## Installation diff --git a/binding/python/_util.py b/binding/python/_util.py index dc5619d..c96e4c1 100644 --- a/binding/python/_util.py +++ b/binding/python/_util.py @@ -71,7 +71,10 @@ def default_library_path(relative: str = "") -> str: os.path.dirname(__file__), relative, "lib/raspberry-pi/%s/libpv_falcon.so" % linux_machine ) elif platform.system() == "Windows": - return os.path.join(os.path.dirname(__file__), relative, "lib", "windows", "amd64", "libpv_falcon.dll") + if platform.machine().lower() == 'amd64': + return os.path.join(os.path.dirname(__file__), relative, "lib", "windows", "amd64", "libpv_falcon.dll") + elif platform.machine().lower() == 'arm64': + return os.path.join(os.path.dirname(__file__), relative, "lib", "windows", "arm64", "libpv_falcon.dll") raise NotImplementedError("Unsupported platform.") diff --git a/binding/python/setup.py b/binding/python/setup.py index 14c04d8..5ac26cb 100644 --- a/binding/python/setup.py +++ b/binding/python/setup.py @@ -42,7 +42,7 @@ setuptools.setup( name="pvfalcon", - version="1.0.2", + version="1.0.3", author="Picovoice", author_email="hello@picovoice.ai", description="Falcon Speaker Diarization Engine", diff --git a/demo/python/README.md b/demo/python/README.md index 2546fdd..e8363c3 100644 --- a/demo/python/README.md +++ b/demo/python/README.md @@ -8,13 +8,13 @@ Falcon is an on-device speaker diarization engine. Falcon is: - Private; All voice processing runs locally. - Cross-Platform: - - Linux (x86_64), macOS (x86_64, arm64), Windows (x86_64) + - Linux (x86_64), macOS (x86_64, arm64), Windows (x86_64, arm64) - Raspberry Pi (3, 4, 5) ## Compatibility - Python 3.8+ -- Runs on Linux (x86_64), macOS (x86_64, arm64), Windows (x86_64), and Raspberry Pi (3, 4, 5). +- Runs on Linux (x86_64), macOS (x86_64, arm64), Windows (x86_64, arm64), and Raspberry Pi (3, 4, 5). ## Installation diff --git a/demo/python/requirements.txt b/demo/python/requirements.txt index 172fc9b..4bf2b10 100644 --- a/demo/python/requirements.txt +++ b/demo/python/requirements.txt @@ -1,3 +1,3 @@ -pvfalcon==1.0.2 -pvrecorder==1.2.2 +pvfalcon==1.0.3 +pvrecorder==1.2.4 tabulate==0.9.0 diff --git a/demo/python/setup.py b/demo/python/setup.py index 568620f..53ea3bc 100644 --- a/demo/python/setup.py +++ b/demo/python/setup.py @@ -28,7 +28,7 @@ setuptools.setup( name="pvfalcondemo", - version="1.0.2", + version="1.0.3", author="Picovoice", author_email="hello@picovoice.ai", description="Falcon Speaker Diarization engine demos", @@ -36,7 +36,7 @@ long_description_content_type="text/markdown", url="https://github.com/Picovoice/falcon", packages=["pvfalcondemo"], - install_requires=["pvfalcon==1.0.2", "pvrecorder==1.2.2", "tabulate==0.8.10"], + install_requires=["pvfalcon==1.0.3", "pvrecorder==1.2.4", "tabulate==0.8.10"], include_package_data=True, classifiers=[ "Development Status :: 5 - Production/Stable", diff --git a/lib/windows/arm64/libpv_falcon.dll b/lib/windows/arm64/libpv_falcon.dll new file mode 100644 index 0000000..0f9d2c9 Binary files /dev/null and b/lib/windows/arm64/libpv_falcon.dll differ