aboutsummaryrefslogtreecommitdiff
path: root/audio/lpcnet
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 /audio/lpcnet
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.
Diffstat (limited to 'audio/lpcnet')
-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
5 files changed, 133 insertions, 0 deletions
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