From 458f1ca5847b597429699c88a96fcb83ae408bbd Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Thu, 18 Feb 2021 17:44:49 +0400 Subject: [PATCH] Fix build --- submodules/Speak/BUILD | 15 +++++++++++++++ submodules/Speak/Sources/Speak.swift | 18 ++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 submodules/Speak/BUILD create mode 100644 submodules/Speak/Sources/Speak.swift diff --git a/submodules/Speak/BUILD b/submodules/Speak/BUILD new file mode 100644 index 0000000000..2cdcc0121b --- /dev/null +++ b/submodules/Speak/BUILD @@ -0,0 +1,15 @@ +load("@build_bazel_rules_swift//swift:swift.bzl", "swift_library") + +swift_library( + name = "Speak", + module_name = "Speak", + srcs = glob([ + "Sources/**/*.swift", + ]), + deps = [ + "//submodules/Display:Display", + ], + visibility = [ + "//visibility:public", + ], +) diff --git a/submodules/Speak/Sources/Speak.swift b/submodules/Speak/Sources/Speak.swift new file mode 100644 index 0000000000..1afd04258f --- /dev/null +++ b/submodules/Speak/Sources/Speak.swift @@ -0,0 +1,18 @@ +import Foundation +import AVFoundation + +// Incuding at least one Objective-C class in a swift file ensures that it doesn't get stripped by the linker +private final class LinkHelperClass: NSObject { +} + +public func speakText(_ text: String) { + guard !text.isEmpty else { + return + } + let speechSynthesizer = AVSpeechSynthesizer() + let utterance = AVSpeechUtterance(string: text) + if #available(iOS 11.0, *), let language = NSLinguisticTagger.dominantLanguage(for: text) { + utterance.voice = AVSpeechSynthesisVoice(language: language) + } + speechSynthesizer.speak(utterance) +}