aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiane Bruce <db@FreeBSD.org>2022-08-03 00:00:35 +0000
committerDiane Bruce <db@FreeBSD.org>2022-08-03 00:10:23 +0000
commit5daa5d9a69bf6c60a39927dc99c7ca92ac61c906 (patch)
tree32758c71a89b92c477c2411256051c681c027c45
parentc04be33cd021235f5cb84003bc736ac354c3ee71 (diff)
downloadports-5daa5d9a69bf6c60a39927dc99c7ca92ac61c906.tar.gz
ports-5daa5d9a69bf6c60a39927dc99c7ca92ac61c906.zip
audio/lpcnet: New port: Neural Net speech coding
Needed for freedv update see: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=264769 Experimental version of LPCNet that has been used to develop FreeDV 2020 - a HF radio Digial Voice mode for over the air experimentation with Neural Net speech coding. Possibly the first use of Neural Net speech coding in real world operation.
-rw-r--r--audio/Makefile1
-rw-r--r--audio/lpcnet/Makefile27
-rw-r--r--audio/lpcnet/distinfo7
-rw-r--r--audio/lpcnet/files/patch-CMakeLists.txt86
-rw-r--r--audio/lpcnet/pkg-descr6
-rw-r--r--audio/lpcnet/pkg-plist7
6 files changed, 134 insertions, 0 deletions
diff --git a/audio/Makefile b/audio/Makefile
index 80e05f9e50a2..2d4bf717cc7e 100644
--- a/audio/Makefile
+++ b/audio/Makefile
@@ -443,6 +443,7 @@
SUBDIR += logitechmediaserver-sqlplaylist
SUBDIR += logitechmediaserver-trackstat
SUBDIR += lollypop
+ SUBDIR += lpcnet
SUBDIR += lsp-plugins-lv2
SUBDIR += lua-mpd
SUBDIR += luppp
diff --git a/audio/lpcnet/Makefile b/audio/lpcnet/Makefile
new file mode 100644
index 000000000000..9ec36f347f5f
--- /dev/null
+++ b/audio/lpcnet/Makefile
@@ -0,0 +1,27 @@
+PORTNAME= lpcnet
+PORTVERSION= 20210629
+CATEGORIES= audio hamradio
+MASTER_SITES= http://rowetel.com/downloads/deep/:main \
+ GH:sub
+DISTFILES= lpcnet_191005_v1.0.tgz:main \
+ ${PORTNAME}-${PORTVERSION}${EXTRACT_SUFX}:sub
+
+MAINTAINER= hamradio@FreeBSD.org
+COMMENT= Neural Net speech coding
+
+LICENSE= LGPL21
+
+LIB_DEPENDS= libcodec2.so:audio/codec2
+
+USES= cmake compiler:c++11-lib
+CMAKE_ARGS+= -DMACHINE_CPU:STRING="${MACHINE_CPU}" \
+ -DWRKDIR:STRING=${WRKDIR}
+
+USE_GITHUB= yes
+GH_ACCOUNT= drowe67
+GH_PROJECT= LPCNet
+GH_TAGNAME= 0dc5935
+
+.include <bsd.port.pre.mk>
+.include <bsd.cpu.mk>
+.include <bsd.port.post.mk>
diff --git a/audio/lpcnet/distinfo b/audio/lpcnet/distinfo
new file mode 100644
index 000000000000..a0b495a1716d
--- /dev/null
+++ b/audio/lpcnet/distinfo
@@ -0,0 +1,7 @@
+TIMESTAMP = 1641483640
+SHA256 (lpcnet_191005_v1.0.tgz) = 509440924751fdd87ffaa5683ee3dddd937af5c833b9104ccce65d51614926c8
+SIZE (lpcnet_191005_v1.0.tgz) = 18396516
+SHA256 (lpcnet-20210629.tar.gz) = 31a687ac5e822c6c2cf75fe8e7371a5cd834d692635a802ec8fd33dc340d9cf2
+SIZE (lpcnet-20210629.tar.gz) = 33016759
+SHA256 (drowe67-LPCNet-20210629-0dc5935_GH0.tar.gz) = 31a687ac5e822c6c2cf75fe8e7371a5cd834d692635a802ec8fd33dc340d9cf2
+SIZE (drowe67-LPCNet-20210629-0dc5935_GH0.tar.gz) = 33016759
diff --git a/audio/lpcnet/files/patch-CMakeLists.txt b/audio/lpcnet/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..d11722280aa1
--- /dev/null
+++ b/audio/lpcnet/files/patch-CMakeLists.txt
@@ -0,0 +1,86 @@
+--- CMakeLists.txt.orig 2021-06-29 09:04:36 UTC
++++ CMakeLists.txt
+@@ -87,15 +87,32 @@ message(STATUS "Host system arch is: ${CMAKE_SYSTEM_PR
+ # Detection of available CPU optimizations
+ if(NOT DISABLE_CPU_OPTIMIZATION)
+ if(UNIX AND NOT APPLE)
+- message(STATUS "Looking for available CPU optimizations on Linux/BSD system...")
+- execute_process(COMMAND grep -c "avx2" /proc/cpuinfo
+- OUTPUT_VARIABLE AVX2)
+- execute_process(COMMAND grep -c "avx " /proc/cpuinfo
+- OUTPUT_VARIABLE AVX)
+- execute_process(COMMAND grep -c "sse4_1 " /proc/cpuinfo
+- OUTPUT_VARIABLE SSE)
+- execute_process(COMMAND grep -c "neon" /proc/cpuinfo
+- OUTPUT_VARIABLE NEON)
++ if ( ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
++ message(STATUS "Looking for available CPU optimizations on FreeBSD system...")
++ message (STATUS "MACHINE_CPU = ${MACHINE_CPU}")
++ if (MACHINE_CPU MATCHES "avx")
++ set(AVX TRUE)
++ endif()
++ if (MACHINE_CPU MATCHES "avx2")
++ set(AVX2 TRUE)
++ endif()
++ if (MACHINE_CPU MATCHES "sse")
++ set(SSE TRUE)
++ endif()
++ if (MACHINE_CPU MATCHES "neon")
++ set(NEON TRUE)
++ endif()
++ else()
++ message(STATUS "Looking for available CPU optimizations on Linux system...")
++ execute_process(COMMAND grep -c "avx2" /proc/cpuinfo
++ OUTPUT_VARIABLE AVX2)
++ execute_process(COMMAND grep -c "avx " /proc/cpuinfo
++ OUTPUT_VARIABLE AVX)
++ execute_process(COMMAND grep -c "sse4_1 " /proc/cpuinfo
++ OUTPUT_VARIABLE SSE)
++ execute_process(COMMAND grep -c "neon" /proc/cpuinfo
++ OUTPUT_VARIABLE NEON)
++ endif()
+ elseif(APPLE)
+ if(BUILD_OSX_UNIVERSAL)
+ # Presume AVX/AVX2 are enabled on the x86 side. The ARM side will auto-enable
+@@ -140,36 +157,12 @@ if(${NEON} OR ${NEON} GREATER 0)
+ endif()
+
+ # grab latest NN model (or substitute your own)
+-set(LPCNET_ROOT http://rowetel.com/downloads/deep/)
+-set(LPCNET_FILE lpcnet_191005_v1.0.tgz)
+-set(LPCNET_URL ${LPCNET_ROOT}${LPCNET_FILE})
++# retrieved by port
++#set(LPCNET_ROOT http://rowetel.com/downloads/deep/)
++#set(LPCNET_FILE lpcnet_191005_v1.0.tgz)
++#set(LPCNET_URL ${LPCNET_ROOT}${LPCNET_FILE})
+
+-if(EXISTS ${CMAKE_BINARY_DIR}/${LPCNET_FILE})
+- set(lpcnet_SOURCE_DIR ${CMAKE_BINARY_DIR}/src)
+- file(MAKE_DIRECTORY ${lpcnet_SOURCE_DIR})
+- execute_process(COMMAND tar -xzf ${CMAKE_BINARY_DIR}/${LPCNET_FILE} -C ${CMAKE_BINARY_DIR}/src)
+-
+-# Work around not having the FetchContent module.
+-elseif(CMAKE_VERSION VERSION_LESS 3.11.4)
+- set(lpcnet_SOURCE_DIR ${CMAKE_BINARY_DIR}/src)
+- if(NOT EXISTS ${lpcnet_SOURCE_DIR})
+- file(DOWNLOAD ${LPCNET_URL}
+- ${CMAKE_BINARY_DIR}/${LPCNET_FILE}
+- SHOW_PROGRESS
+- )
+- file(MAKE_DIRECTORY ${lpcnet_SOURCE_DIR})
+- execute_process(COMMAND tar -xzf ${CMAKE_BINARY_DIR}/${LPCNET_FILE} -C ${CMAKE_BINARY_DIR}/src)
+- endif()
+-else()
+- include(FetchContent)
+- FetchContent_Declare(
+- lpcnet
+- URL ${LPCNET_URL})
+- FetchContent_GetProperties(lpcnet)
+- if(NOT lpcnet_POPULATED)
+- FetchContent_Populate(lpcnet)
+- endif()
+-endif()
++set(lpcnet_SOURCE_DIR ${WRKDIR})
+
+ # Find codec2
+ if(CODEC2_BUILD_DIR)
diff --git a/audio/lpcnet/pkg-descr b/audio/lpcnet/pkg-descr
new file mode 100644
index 000000000000..86c8314a1260
--- /dev/null
+++ b/audio/lpcnet/pkg-descr
@@ -0,0 +1,6 @@
+Experimental version of LPCNet that has been used to develop FreeDV 2020
+- a HF radio Digial Voice mode for over the air experimentation with
+Neural Net speech coding. Possibly the first use of Neural Net speech
+coding in real world operation.
+
+WWW: http://freedv.org/tiki-index.php
diff --git a/audio/lpcnet/pkg-plist b/audio/lpcnet/pkg-plist
new file mode 100644
index 000000000000..54460bd5512e
--- /dev/null
+++ b/audio/lpcnet/pkg-plist
@@ -0,0 +1,7 @@
+bin/lpcnet_dec
+bin/lpcnet_enc
+include/lpcnet/lpcnet_freedv.h
+lib/cmake/lpcnetfreedv/lpcnetfreedv-config-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/lpcnetfreedv/lpcnetfreedv-config.cmake
+lib/liblpcnetfreedv.so
+lib/liblpcnetfreedv.so.0.2