Я разработал функцию распознавания речи, которая может обнаруживать арабский звук и возвращать строку, которую я назначаю переменной с именем speechRecogText.
В коде у меня также есть текстовое поле, в котором я сохраняю ввод в другой строковой переменной с именем textFieldText.
Goal Я хочу проверить, содержит ли speechRecogText запросы в textFieldText<7230687689>, но это не работает с арабским языком .
Однако, когда я пытаюсь сделать наоборот speechRecogText.contains(textFieldText), все работает. Код ниже
// the two variables
var speechRecogText: String = ""
var textFieldText: String = ""
Функции распознавания речи и текстовое поле... После ввода входных данных я вызываю функцию compareTexts()
func compareTexts() {
// Checking the textField text
if speechRecogText.contains(textFieldText) {
print("matching texts")
} else {
print("not matching")
}
// Checking the speech recog text
if textFieldText.contains(speechRecogText) {
print("matching texts")
} else {
print("not matching")
}
}
Например, оба напечатают слово "قل" на арабском языке. Но когда я вызываю функцию, консоль показывает (ответ):
Console
//matching texts
//not matching
Я хочу, чтобы второй тоже работал/сопоставлялся и печатал совпадающие тексты.
Хотя обе переменные содержат одинаковый текст, результат немного сбивает с толку. Разве они не хранят одинаковые значения или отображают одну и ту же строку, но в глубине кода они как-то различаются?
Я был бы очень признателен за вашу поддержку :)
Вот весь код
Это весь код.
import SwiftUI
import SwiftSpeech
struct ContentView: View {
@State var speechRecogText = "قل"
@State var textFieldText = "قل"
var body: some View {
VStack {
//MARK: - Text Field
TextField("textfield text", text: $textFieldText)
.padding()
Button(action: {
compareTexts()
} ) {
ZStack {
Color.blue.clipShape(Circle()).frame(width: 70, height: 70)
Text("Check").foregroundColor(.white)
}
}
//MARK: - Speech Recognition
Text("speechRecogText: " + speechRecogText)
SwiftSpeech.RecordButton()
.swiftSpeechRecordOnHold(locale: Locale(identifier: "ar"),
animation: .spring(),
distanceToCancel: 50)
.onRecognizeLatest { result in
self.speechRecogText = result.bestTranscription.formattedString
if result.isFinal {
print("last transcript")
}
} handleError: { error in
print("Failed recognizing the audio. Retry: \(error)")
}
}
}
func compareTexts() {
// Checking the textField text
if speechRecogText.contains(textFieldText) {
print("---> speechRecogText contains textFieldText")
} else {
print("---> speechRecogText DOES NOT contains textFieldText")
}
// Checking the speech recog text
if textFieldText.contains(speechRecogText) {
print("---> textFieldText contains speechRecogText")
} else {
print("---> textFieldText DOES NOT contains speechRecogText")
}
}
}
Не могли бы вы привести еще несколько примеров арабского текста, где он не работает, потому что мой тест с использованием вашего примера арабского текста работает для меня.
Я попробовал кучу других слов. Они не работали. Можете ли вы попробовать просто случайные слова или короткие фразы?
Если вы считаете, что будет лучше поделиться функциями распознавания речи, я
нет необходимости в голосовой функции, просто дайте мне текст, который не работает. Весь текст, который я помещаю в свои тесты, работает.
И вы используете тот же код? Можете ли вы поделиться кодом? Потому что, честно говоря, я пробовал разные слова, и ни одно из них не соответствовало тому порядку, в котором я хочу.