diff options
author | Diane Bruce <db@FreeBSD.org> | 2022-08-03 00:00:35 +0000 |
---|---|---|
committer | Diane Bruce <db@FreeBSD.org> | 2022-08-03 00:10:23 +0000 |
commit | 5daa5d9a69bf6c60a39927dc99c7ca92ac61c906 (patch) | |
tree | 32758c71a89b92c477c2411256051c681c027c45 | |
parent | c04be33cd021235f5cb84003bc736ac354c3ee71 (diff) | |
download | ports-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/Makefile | 1 | ||||
-rw-r--r-- | audio/lpcnet/Makefile | 27 | ||||
-rw-r--r-- | audio/lpcnet/distinfo | 7 | ||||
-rw-r--r-- | audio/lpcnet/files/patch-CMakeLists.txt | 86 | ||||
-rw-r--r-- | audio/lpcnet/pkg-descr | 6 | ||||
-rw-r--r-- | audio/lpcnet/pkg-plist | 7 |
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 |