From 32480ef0c5b80556bef0d14f256f8fa716859a9c Mon Sep 17 00:00:00 2001 From: Ettore Landini Date: Wed, 25 Oct 2023 17:39:02 +0200 Subject: [PATCH] Added ISpeechTranscription device The device works but no test is available at the moment. It needs to be implemented --- src/devices/CMakeLists.txt | 1 + .../googleSpeechTranscription/CMakeLists.txt | 45 +++++++ .../GoogleSpeechTranscription.cpp | 123 ++++++++++++++++++ .../GoogleSpeechTranscription.h | 91 +++++++++++++ .../demos/CMakeLists.txt | 12 ++ .../demos/test_audio.wav | Bin 0 -> 121004 bytes .../tests/CMakeLists.txt | 4 + .../tests/googleSpeechSynthesizer_test.cpp | 84 ++++++++++++ 8 files changed, 360 insertions(+) create mode 100644 src/devices/googleSpeechTranscription/CMakeLists.txt create mode 100644 src/devices/googleSpeechTranscription/GoogleSpeechTranscription.cpp create mode 100644 src/devices/googleSpeechTranscription/GoogleSpeechTranscription.h create mode 100644 src/devices/googleSpeechTranscription/demos/CMakeLists.txt create mode 100644 src/devices/googleSpeechTranscription/demos/test_audio.wav create mode 100644 src/devices/googleSpeechTranscription/tests/CMakeLists.txt create mode 100644 src/devices/googleSpeechTranscription/tests/googleSpeechSynthesizer_test.cpp diff --git a/src/devices/CMakeLists.txt b/src/devices/CMakeLists.txt index ef268ee..1f04a64 100644 --- a/src/devices/CMakeLists.txt +++ b/src/devices/CMakeLists.txt @@ -2,4 +2,5 @@ # SPDX-License-Identifier: BSD-3-Clause add_subdirectory(googleSpeechSynthesizer) +add_subdirectory(googleSpeechTranscription) add_subdirectory(googleDialogflowCxChatBot) diff --git a/src/devices/googleSpeechTranscription/CMakeLists.txt b/src/devices/googleSpeechTranscription/CMakeLists.txt new file mode 100644 index 0000000..96dbca1 --- /dev/null +++ b/src/devices/googleSpeechTranscription/CMakeLists.txt @@ -0,0 +1,45 @@ +# SPDX-FileCopyrightText: 2023 Istituto Italiano di Tecnologia (IIT) +# SPDX-License-Identifier: BSD-3-Clause + +yarp_prepare_plugin(googleSpeechTranscription + CATEGORY device + TYPE GoogleSpeechTranscription + INCLUDE GoogleSpeechTranscription.h + INTERNAL ON +) + +find_package(google_cloud_cpp_speech REQUIRED) + +if(NOT SKIP_googleSpeechTranscription) + yarp_add_plugin(yarp_googleSpeechTranscription) + + target_sources(yarp_googleSpeechTranscription + PRIVATE + GoogleSpeechTranscription.cpp + GoogleSpeechTranscription.h + ) + + target_link_libraries(yarp_googleSpeechTranscription + PRIVATE + YARP::YARP_os + YARP::YARP_sig + YARP::YARP_dev + google-cloud-cpp::speech + ) + + yarp_install( + TARGETS yarp_googleSpeechTranscription + EXPORT yarp-device-googleSpeechTranscription + COMPONENT yarp-device-googleSpeechTranscription + LIBRARY DESTINATION ${YARP_DYNAMIC_PLUGINS_INSTALL_DIR} + ARCHIVE DESTINATION ${YARP_STATIC_PLUGINS_INSTALL_DIR} + YARP_INI DESTINATION ${YARP_PLUGIN_MANIFESTS_INSTALL_DIR} + ) + + if(YARP_COMPILE_TESTS) + add_subdirectory(tests) + add_subdirectory(demos) + endif() + + set_property(TARGET yarp_googleSpeechTranscription PROPERTY FOLDER "Plugins/Device") +endif() diff --git a/src/devices/googleSpeechTranscription/GoogleSpeechTranscription.cpp b/src/devices/googleSpeechTranscription/GoogleSpeechTranscription.cpp new file mode 100644 index 0000000..995f40e --- /dev/null +++ b/src/devices/googleSpeechTranscription/GoogleSpeechTranscription.cpp @@ -0,0 +1,123 @@ +/* + * SPDX-FileCopyrightText: 2023 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _USE_MATH_DEFINES +#define _USE_MATH_DEFINES +#endif + +#include "GoogleSpeechTranscription.h" + +#include + +#include +#include +#include + +#include + +using namespace yarp::os; +using namespace yarp::dev; + + +YARP_LOG_COMPONENT(GOOGLESPEECHTRANSCR, "yarp.googleSpeechTranscription", yarp::os::Log::TraceType); + + +GoogleSpeechTranscription::GoogleSpeechTranscription() +{ + +} + +bool GoogleSpeechTranscription::open(yarp::os::Searchable &config) +{ + if(config.check("__offline")) + { + m_offline = config.find("__offline").asInt32() == 1; + } + if(!config.check("language_code")) + { + yCError(GOOGLESPEECHTRANSCR) << "No language code specified"; + + return false; + } + m_sampleRate = config.check("sample_rate_hertz", yarp::os::Value(16000), "sample rate (int)").asInt32(); + m_languageCode = config.find("language_code").asString(); + m_audioConfig.set_language_code(m_languageCode); + m_audioConfig.set_encoding(google::cloud::speech::v1::RecognitionConfig::LINEAR16); + m_audioConfig.set_sample_rate_hertz(m_sampleRate); + m_client = std::make_shared(google::cloud::speech_v1::MakeSpeechConnection()); + + return true; +} + +bool GoogleSpeechTranscription::close() +{ + return true; +} + +bool GoogleSpeechTranscription::setLanguage(const std::string& language) +{ + if(language == "auto") + { + yCError(GOOGLESPEECHTRANSCR) << "The \"auto\" option is not supported by this device"; + + return false; + } + + m_audioConfig.set_language_code(language); + return true; +} + +bool GoogleSpeechTranscription::getLanguage(std::string& language) +{ + language = m_audioConfig.language_code(); + + return true; +} + +bool GoogleSpeechTranscription::transcribe(const yarp::sig::Sound& sound, std::string& transcription, double& score) +{ + transcription=""; + score = 0.0; + + if (sound.getSamples() == 0 || + sound.getChannels() == 0) + { + yCError(GOOGLESPEECHTRANSCR) << "Invalid Sound sample received"; + return false; + } + + google::cloud::speech::v1::RecognitionAudio audio; + auto rawData_tmp = sound.getNonInterleavedAudioRawData(); + auto rawData = std::vector(rawData_tmp.begin(), rawData_tmp.end()); + audio.set_content((char*)rawData.data(),rawData.size()*2); + + auto response = m_client->Recognize(m_audioConfig,audio); + + if(!response) + { + yCError(GOOGLESPEECHTRANSCR) << "Could not perform audio transcription:" << response.status().message(); + return false; + } + + yCDebug(GOOGLESPEECHTRANSCR) << "Results size:" << response->results_size(); + for(int i=0; iresults_size(); i++) + { + auto result = response->results(i); + yCDebug(GOOGLESPEECHTRANSCR) << i << "Alternative size:" << result.alternatives_size(); + for(int j=0; j score) + { + score = tempConf; + transcription = alternative.transcript(); + } + } + } + + return true; +} diff --git a/src/devices/googleSpeechTranscription/GoogleSpeechTranscription.h b/src/devices/googleSpeechTranscription/GoogleSpeechTranscription.h new file mode 100644 index 0000000..493ecb2 --- /dev/null +++ b/src/devices/googleSpeechTranscription/GoogleSpeechTranscription.h @@ -0,0 +1,91 @@ +/* + * SPDX-FileCopyrightText: 2023 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef YARP_GOOGLESPEECHTRANSCR_H +#define YARP_GOOGLESPEECHTRANSCR_H + +#include +#include +#include +#include +#include +#include +#include + +#include "google/cloud/speech/v1/speech_client.h" +#include "google/protobuf/repeated_ptr_field.h" + + +/** + * @ingroup dev_impl_other + * + * \section googleSpeechTranscription + * + * \brief `googleSpeechTranscription`: A yarp device for speech transcription using google cloud cpp libraries + * + * Parameters required by this device are: + * | Parameter name | SubParameter | Type | Units | Default Value | Required | Description | Notes | + * |:--------------:|:------------:|:-------:|:--------------:|:-------------:|:--------:|:--------------------------------------------------:|:-----:| + * | language_code | - | string | - | - | Yes | Language for speech synthesis (e.g. "ita", "eng") | | + * + * + * example of xml file with a fake odometer + * + * \code{.unparsed} + * + * + * + * + * + * + * it-IT + * + * + * + * + * + * + * + * googleTranscr + * + * + * + * + * + * + * + * \endcode + */ + +class GoogleSpeechTranscription : + public yarp::dev::DeviceDriver, + public yarp::dev::ISpeechTranscription +{ +public: + GoogleSpeechTranscription(); + GoogleSpeechTranscription(const GoogleSpeechTranscription&) = delete; + GoogleSpeechTranscription(GoogleSpeechTranscription&&) noexcept = delete; + GoogleSpeechTranscription& operator=(const GoogleSpeechTranscription&) = delete; + GoogleSpeechTranscription& operator=(GoogleSpeechTranscription&&) noexcept = delete; + ~GoogleSpeechTranscription() override = default; + + // DeviceDriver + bool open(yarp::os::Searchable& config) override; + bool close() override; + + // yarp::dev::ISpeechTranscription + bool setLanguage(const std::string& language="auto") override; + bool getLanguage(std::string& language) override; + bool transcribe(const yarp::sig::Sound& sound, std::string& transcription, double& score) override; + +private: + int m_sampleRate; + bool m_offline{false}; + std::string m_languageCode; + google::cloud::speech::v1::RecognitionConfig m_audioConfig; + std::shared_ptr m_client{nullptr}; +}; + +#endif // YARP_GOOGLESPEECHTRANSCR_H diff --git a/src/devices/googleSpeechTranscription/demos/CMakeLists.txt b/src/devices/googleSpeechTranscription/demos/CMakeLists.txt new file mode 100644 index 0000000..16336fd --- /dev/null +++ b/src/devices/googleSpeechTranscription/demos/CMakeLists.txt @@ -0,0 +1,12 @@ +# SPDX-FileCopyrightText: 2023-2023 Istituto Italiano di Tecnologia (IIT) +# SPDX-License-Identifier: BSD-3-Clause + +set(appname googleSpeechSynthesizer_demo) + +file(GLOB conf ${CMAKE_CURRENT_SOURCE_DIR}/yarprobotinterface_xml/*.xml) +file(GLOB data ${CMAKE_CURRENT_SOURCE_DIR}/*.wav) +file(GLOB apps ${CMAKE_CURRENT_SOURCE_DIR}/*.xml) + +yarp_install(FILES ${conf} DESTINATION ${YARP_CONTEXTS_INSTALL_DIR}/${appname}) +yarp_install(FILES ${data} DESTINATION ${YARP_CONTEXTS_INSTALL_DIR}/${appname}) +yarp_install(FILES ${apps} DESTINATION ${YARP_APPLICATIONS_INSTALL_DIR}) diff --git a/src/devices/googleSpeechTranscription/demos/test_audio.wav b/src/devices/googleSpeechTranscription/demos/test_audio.wav new file mode 100644 index 0000000000000000000000000000000000000000..1b1e7ab64023194ec36b1ac7b7e12be4c643efb6 GIT binary patch literal 121004 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 b_xRr)_-_yVw+H^)1OM%T|MtNDh93AomkhGQ literal 0 HcmV?d00001 diff --git a/src/devices/googleSpeechTranscription/tests/CMakeLists.txt b/src/devices/googleSpeechTranscription/tests/CMakeLists.txt new file mode 100644 index 0000000..f5030b5 --- /dev/null +++ b/src/devices/googleSpeechTranscription/tests/CMakeLists.txt @@ -0,0 +1,4 @@ +# SPDX-FileCopyrightText: 2023 Istituto Italiano di Tecnologia (IIT) +# SPDX-License-Identifier: BSD-3-Clause + +create_device_test (googleSpeechSynthesizer) diff --git a/src/devices/googleSpeechTranscription/tests/googleSpeechSynthesizer_test.cpp b/src/devices/googleSpeechTranscription/tests/googleSpeechSynthesizer_test.cpp new file mode 100644 index 0000000..dd484bb --- /dev/null +++ b/src/devices/googleSpeechTranscription/tests/googleSpeechSynthesizer_test.cpp @@ -0,0 +1,84 @@ +/* + * SPDX-FileCopyrightText: 2023 Istituto Italiano di Tecnologia (IIT) + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +using namespace yarp::dev; +using namespace yarp::os; + +TEST_CASE("dev::googleSpeechSynthesizer_test", "[yarp::dev]") +{ + YARP_REQUIRE_PLUGIN("googleSpeechSynthesizer", "device"); + + Network::setLocalMode(true); + + SECTION("Checking googleSpeechSynthesizer device") + { + ISpeechSynthesizer* iSynth{nullptr}; + PolyDriver dd; + + //read a test sound file from disk + yarp::sig::Sound snd; + yarp::os::ResourceFinder rf; + + rf.setQuiet(false); + rf.setVerbose(true); + + rf.setDefaultContext("googleSpeechSynthesizer_demo"); + std::string ss = rf.findFile("test_audio.wav"); + CHECK(!ss.empty()); + yarp::sig::file::read(snd,ss.c_str()); + CHECK(snd.getSamples()>0); + + //"Checking opening device" + { + Property pcfg; + const std::string init_lang{"it-IT"}; + const std::string init_voice{"it-IT-Wavenet-A"}; + pcfg.put("device", "googleSpeechSynthesizer"); + pcfg.put("language_code",init_lang); + pcfg.put("voice_name",init_voice); + pcfg.put("__offline", 1); + REQUIRE(dd.open(pcfg)); + REQUIRE(dd.view(iSynth)); + } + + const std::string lang_to_set{"en-GB"}; + const std::string voice_to_set{"en-GB-Neural2-C"}; + std::string lang_code; + std::string voice_name; + + std::string toSynthesize{"This is a text to speech test"}; + yarp::sig::Sound outputSound; + CHECK(iSynth->setLanguage(lang_to_set)); + CHECK(iSynth->setVoice(voice_to_set)); + CHECK(iSynth->getLanguage(lang_code)); + CHECK(lang_code == lang_to_set); + CHECK(iSynth->getVoice(voice_name)); + CHECK(voice_name == voice_to_set); + + // For the moment being, actually using the API for test only purposes doesn't seem like a good idea since it will waste money + //CHECK(iSynth->synthesize(toSynthesize,outputSound)); + //CHECK(outputSound == snd); + + //"Close all polydrivers and check" + { + CHECK(dd.close()); + } + } + + Network::setLocalMode(false); +}