Ana Guerrero 2024-12-24 15:27:10 +00:00 committed by Git OBS Bridge
commit 029bd9362e
3 changed files with 131 additions and 0 deletions

View File

@ -1,3 +1,12 @@
-------------------------------------------------------------------
Wed Dec 18 18:57:02 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
- Add patch to fix build with pocketsphinx 5.0.3 in TW since
the API changed in the 5.0.0 release. Also, removed some
parameters that don't seem to be configurable by pocketsphinx
anymore:
* use-pocketsphinx-5.0.0-api.patch
-------------------------------------------------------------------
Tue Aug 20 07:14:06 UTC 2024 - Christophe Marin <christophe@krop.fr>

View File

@ -37,6 +37,8 @@ Patch6: 0007-VideoPlayer-check-return-of-swr_alloc_set_opts2.patch
Patch7: 0008-StreamProcessor-stop-using-pkt_duration.patch
Patch8: 0009-StreamProcessor-stop-using-AVFrame-duration.patch
Patch9: 0010-Require-FFmpeg-5.1.5.patch
# PATCH-FIX-UPSTREAM https://invent.kde.org/multimedia/subtitlecomposer/-/merge_requests/48
Patch10: use-pocketsphinx-5.0.0-api.patch
BuildRequires: cmake >= 3.10
BuildRequires: extra-cmake-modules
BuildRequires: libQt5Widgets-private-headers-devel

View File

@ -0,0 +1,120 @@
From: Antonio Larrosa <alarrosa@suse.com>
Subject: Use the pocketsphinx 5.0.0 api
This uses the new pocketsphinx 5.0.0 api and stops using the vad_* parameters
that don't seem to be available in pocketsphinx anymore. Thus, I also removed
the section to set those parameters in the config dialog.
Index: subtitlecomposer-0.8.1/src/speechplugins/pocketsphinx/pocketsphinxplugin.cpp
===================================================================
--- subtitlecomposer-0.8.1.orig/src/speechplugins/pocketsphinx/pocketsphinxplugin.cpp
+++ subtitlecomposer-0.8.1/src/speechplugins/pocketsphinx/pocketsphinxplugin.cpp
@@ -40,6 +40,12 @@ PocketSphinxPlugin::waveFormat() const
/*virtual*/ bool
PocketSphinxPlugin::init()
{
+#ifdef HAS_POCKETSPHINX_5_0_0
+ m_psConfig = ps_config_init(ps_args());
+ ps_config_set_str(m_psConfig, "hmm", QUrl(PocketSphinxConfig::acousticModelPath()).toLocalFile().toUtf8().constData());
+ ps_config_set_str(m_psConfig, "lm", QUrl(PocketSphinxConfig::trigramModelFile()).toLocalFile().toUtf8().constData());
+ ps_config_set_str(m_psConfig, "dict", QUrl(PocketSphinxConfig::lexiconFile()).toLocalFile().toUtf8().constData());
+#else
m_psConfig = cmd_ln_init(nullptr, ps_args(), true,
"-hmm", QUrl(PocketSphinxConfig::acousticModelPath()).toLocalFile().toUtf8().constData(),
"-lm", QUrl(PocketSphinxConfig::trigramModelFile()).toLocalFile().toUtf8().constData(),
@@ -55,6 +61,7 @@ PocketSphinxPlugin::init()
// Log-ratio between signal level and noise level. (pocketsphinx default: 2.0)
"-vad_threshold", QByteArray::number(PocketSphinxConfig::vadTreshold()).constData(),
nullptr);
+#endif
if(m_psConfig == nullptr) {
qWarning() << "Failed to create PocketSphinx config object";
return false;
@@ -66,7 +73,12 @@ PocketSphinxPlugin::init()
return false;
}
+
+#ifdef HAS_POCKETSPHINX_5_0_0
+ m_psFrameRate = ps_config_int(m_psConfig, "frate");
+#else
m_psFrameRate = cmd_ln_int32_r(m_psConfig, "-frate");
+#endif
m_lineText.clear();
m_lineIn = m_lineOut = 0;
@@ -85,7 +97,11 @@ PocketSphinxPlugin::cleanup()
m_psDecoder = nullptr;
}
if(m_psConfig != nullptr) {
+#ifdef HAS_POCKETSPHINX_5_0_0
+ ps_config_free(m_psConfig);
+#else
cmd_ln_free_r(m_psConfig);
+#endif
m_psConfig = nullptr;
}
}
Index: subtitlecomposer-0.8.1/src/speechplugins/pocketsphinx/CMakeLists.txt
===================================================================
--- subtitlecomposer-0.8.1.orig/src/speechplugins/pocketsphinx/CMakeLists.txt
+++ subtitlecomposer-0.8.1/src/speechplugins/pocketsphinx/CMakeLists.txt
@@ -8,8 +8,9 @@ set(CMAKE_REQUIRED_INCLUDES ${POCKETSPHI
set(CMAKE_REQUIRED_LIBRARIES ${POCKETSPHINX_LIBRARIES})
check_cxx_source_compiles("#include <pocketsphinx.h>\nint main(){ ps_seg_iter(nullptr); return 0; }" PocketSphinx_NEW_ps_seg_iter)
check_cxx_source_compiles("#include <pocketsphinx.h>\nint main(){ cmd_ln_free_r(nullptr); return 0; }" PocketSphinx_OK_prealpha5)
+check_cxx_source_compiles("#include <pocketsphinx.h>\nint main(){ ps_config_init(nullptr); return 0; }" PocketSphinx_5_0_0_api)
-if(NOT PocketSphinx_OK_prealpha5)
+if(NOT PocketSphinx_OK_prealpha5 AND NOT PocketSphinx_5_0_0_api)
message(STATUS "Have found BROKEN PocketSphinx 5 - Speech plugin will not be built")
return()
endif()
@@ -47,3 +48,7 @@ configure_file(${CMAKE_CURRENT_SOURCE_DI
if(PocketSphinx_NEW_ps_seg_iter)
target_compile_definitions(pocketsphinxasr PRIVATE HAS_NEW_PS_SEG_ITER=1)
endif()
+
+if(PocketSphinx_5_0_0_api)
+ target_compile_definitions(pocketsphinxasr PRIVATE HAS_POCKETSPHINX_5_0_0=1)
+endif()
Index: subtitlecomposer-0.8.1/src/speechplugins/pocketsphinx/pocketsphinxconfigwidget.cpp
===================================================================
--- subtitlecomposer-0.8.1.orig/src/speechplugins/pocketsphinx/pocketsphinxconfigwidget.cpp
+++ subtitlecomposer-0.8.1/src/speechplugins/pocketsphinx/pocketsphinxconfigwidget.cpp
@@ -28,6 +28,9 @@ PocketSphinxConfigWidget::PocketSphinxCo
kcfg_lexiconFile->setFilter(QLatin1String("*.dict *.dic|") + i18n("Sphinx Dictionaries") + QLatin1String("\n*|") + i18n("All Files"));
kcfg_trigramModelFile->setFilter(QStringLiteral("*.lm.bin *.lm|") + i18n("Trigram Models") + QLatin1String("\n*|") + i18n("All Files"));
#endif
+#if HAS_POCKETSPHINX_5_0_0
+ grpVAD->hide();
+#endif
}
PocketSphinxConfigWidget::~PocketSphinxConfigWidget()
Index: subtitlecomposer-0.8.1/src/speechplugins/pocketsphinx/pocketsphinxplugin.h
===================================================================
--- subtitlecomposer-0.8.1.orig/src/speechplugins/pocketsphinx/pocketsphinxplugin.h
+++ subtitlecomposer-0.8.1/src/speechplugins/pocketsphinx/pocketsphinxplugin.h
@@ -11,6 +11,9 @@
typedef struct ps_decoder_s ps_decoder_t;
typedef struct cmd_ln_s cmd_ln_t;
+#ifdef HAS_POCKETSPHINX_5_0_0
+typedef struct cmd_ln_s ps_config_t;
+#endif
typedef struct SpeexPreprocessState_ SpeexPreprocessState;
namespace SubtitleComposer {
@@ -40,7 +43,11 @@ private:
void processUtterance();
private:
+#ifdef HAS_POCKETSPHINX_5_0_0
+ ps_config_t *m_psConfig;
+#else
cmd_ln_t *m_psConfig;
+#endif
ps_decoder_t *m_psDecoder;
qint32 m_psFrameRate;