Skip to content

Commit

Permalink
Added support for Windows ARM64 (#31)
Browse files Browse the repository at this point in the history
  • Loading branch information
matt200-ok authored Jan 16, 2025
1 parent 012b11b commit b865a42
Show file tree
Hide file tree
Showing 13 changed files with 50 additions and 15 deletions.
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
7 changes: 6 additions & 1 deletion .github/workflows/c-demos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -96,14 +97,18 @@ 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
with:
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
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/python-demos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
27 changes: 27 additions & 0 deletions .github/workflows/python-perf.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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}}
2 changes: 1 addition & 1 deletion .github/workflows/python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions binding/python/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
5 changes: 4 additions & 1 deletion binding/python/_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.")

Expand Down
2 changes: 1 addition & 1 deletion binding/python/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@

setuptools.setup(
name="pvfalcon",
version="1.0.2",
version="1.0.3",
author="Picovoice",
author_email="[email protected]",
description="Falcon Speaker Diarization Engine",
Expand Down
4 changes: 2 additions & 2 deletions demo/python/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
4 changes: 2 additions & 2 deletions demo/python/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
pvfalcon==1.0.2
pvrecorder==1.2.2
pvfalcon==1.0.3
pvrecorder==1.2.4
tabulate==0.9.0
4 changes: 2 additions & 2 deletions demo/python/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,15 @@

setuptools.setup(
name="pvfalcondemo",
version="1.0.2",
version="1.0.3",
author="Picovoice",
author_email="[email protected]",
description="Falcon Speaker Diarization engine demos",
long_description=long_description,
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",
Expand Down
Binary file added lib/windows/arm64/libpv_falcon.dll
Binary file not shown.

0 comments on commit b865a42

Please sign in to comment.