Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: f99efce2948ad9f817f9e69e3272db98fafce4f0 https://github.com/WebKit/WebKit/commit/f99efce2948ad9f817f9e69e3272db98fafce4f0 Author: ChangSeok Oh <changs...@webkit.org> Date: 2023-01-22 (Sun, 22 Jan 2023)
Changed paths: M LayoutTests/platform/glib/TestExpectations M Source/WebCore/PlatformGTK.cmake M Source/WebCore/PlatformWPE.cmake M Source/WebCore/platform/GStreamer.cmake M Source/WebCore/platform/PlatformSpeechSynthesizer.h M Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp A Source/WebCore/platform/gstreamer/GUniquePtrFlite.h A Source/WebCore/platform/gstreamer/PlatformSpeechSynthesizerGStreamer.cpp A Source/WebCore/platform/gstreamer/WebKitFliteSourceGStreamer.cpp A Source/WebCore/platform/gstreamer/WebKitFliteSourceGStreamer.h M Source/WebKit/SourcesGTK.txt M Source/WebKit/SourcesWPE.txt A Source/WebKit/UIProcess/gstreamer/WebPageProxyGStreamer.cpp M Source/WebKit/WebProcess/WebPage/WebPage.cpp A Source/cmake/FindFlite.cmake M Source/cmake/OptionsGTK.cmake M Source/cmake/OptionsWPE.cmake M Tools/Scripts/webkitpy/style/checker.py Log Message: ----------- [GStreamer] Implement Speech Synthesis with Flite https://bugs.webkit.org/show_bug.cgi?id=250628 Reviewed by Philippe Normand. This change implements the Speech Synthesis part of Web speech with Flite, an open-source speech synthesis engine for ports using GStreamer. Once Flite converts texts to a wave, GStreamer controls the playback of the wave sound in a GStreamer pipeline. This patch only implements basic functionalities such as play, pause, resume, stop, and voice change. Other fine controls, such as pitch, rate, etc., will be supported in the following changes. This change passes 11 out of 13 tests in fast/speechsynthesis. We enable those tests in this patch, skipping failed ones temporarily. We will fix the failures in a different bug. Tests: LayoutTests/fast/speechsynthesis Combined changes: * LayoutTests/platform/glib/TestExpectations: * Source/WebCore/PlatformGTK.cmake: * Source/WebCore/PlatformWPE.cmake: * Source/WebCore/platform/GStreamer.cmake: * Source/WebCore/platform/PlatformSpeechSynthesizer.h: * Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp: A new gst element added, "webkitflitesrc". (WebCore::registerWebKitGStreamerElements): * Source/WebCore/platform/gstreamer/GUniquePtrFlite.h: Added. * Source/WebCore/platform/gstreamer/PlatformSpeechSynthesizerGStreamer.cpp: Added. This file implements the playback of speech with given texts. (WebCore::GstSpeechSynthesisWrapper::GstSpeechSynthesisWrapper): (WebCore::GstSpeechSynthesisWrapper::~GstSpeechSynthesisWrapper): (WebCore::GstSpeechSynthesisWrapper::pause): (WebCore::GstSpeechSynthesisWrapper::resume): (WebCore::GstSpeechSynthesisWrapper::speakUtterance): (WebCore::GstSpeechSynthesisWrapper::cancel): (WebCore::GstSpeechSynthesisWrapper::resetState): (WebCore::GstSpeechSynthesisWrapper::handleMessage): (WebCore::PlatformSpeechSynthesizer::create): (WebCore::PlatformSpeechSynthesizer::PlatformSpeechSynthesizer): (WebCore::PlatformSpeechSynthesizer::initializeVoiceList): (WebCore::PlatformSpeechSynthesizer::pause): (WebCore::PlatformSpeechSynthesizer::resume): (WebCore::PlatformSpeechSynthesizer::speak): (WebCore::PlatformSpeechSynthesizer::cancel): (WebCore::PlatformSpeechSynthesizer::resetState): * Source/WebCore/platform/gstreamer/WebKitFliteSourceGStreamer.cpp: Added. This file initializes a gstreamer source element with flite, registers voices. (webkitFliteSrcConstructed): (webkitFliteSrcStart): (webkitFliteSrcStop): (webkitFliteSrcCreate): (webkitFliteSrcSetCaps): (webkit_flite_src_class_init): (fliteVoices): (fliteVoice): (ensureFliteVoicesInitialized): (webKitFliteSrcSetUtterance): * Source/WebCore/platform/gstreamer/WebKitFliteSourceGStreamer.h: Added. * Source/WebKit/SourcesGTK.txt: * Source/WebKit/SourcesWPE.txt: * Source/WebKit/UIProcess/gstreamer/WebPageProxyGStreamer.cpp: Added. (WebKit::WebPageProxy::didStartSpeaking): (WebKit::WebPageProxy::didFinishSpeaking): (WebKit::WebPageProxy::didPauseSpeaking): (WebKit::WebPageProxy::didResumeSpeaking): (WebKit::WebPageProxy::speakingErrorOccurred): (WebKit::WebPageProxy::boundaryEventOccurred): (WebKit::WebPageProxy::voicesDidChange): * Source/WebKit/WebProcess/WebPage/WebPage.cpp: We don't install the speech synthesis client since we want to run gstreamer in Web Process. (WebKit::m_appHighlightsVisible): * Source/cmake/FindFlite.cmake: Added. * Source/cmake/OptionsGTK.cmake: * Source/cmake/OptionsWPE.cmake: * Tools/Scripts/webkitpy/style/checker.py: Add WebKitFliteSourceGStreamer files for naming exceptions. Canonical link: https://commits.webkit.org/259197@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes