Android studio TTS:不阅读传递给 speak() 函数的文本
Android studio TTS: Not reading text passed into speak() function
我正在开发一个应用程序,它使用 MLKit 的 OCR 功能从图像中读取文本,将其显示给用户,然后使用 Android 的 TTS,但它似乎无法正常工作。
private TextToSpeech textReader; // Instance of Android's built in TTS
private String multipleBlockText; // Empty to store multiple blocks
// Initialise TTS
textReader = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
textReader.setLanguage(Locale.UK); // Sets language to US, English.
}
});
// OCR code goes here
@Override
public void onClick(View v) {
try {
detectText(); // Calls function for OCR from LKit library
// Reads text
textReader.speak(text, TextToSpeech.QUEUE_FLUSH, null);
} catch(Exception error){ // Error handling: Prevents app crash on no text readable
detectedText.setText("Error!");
}
}
我也在我的清单中声明了 TTS:
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.TTS_SERVICE" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
但是当我 运行 我的应用程序时,它会向用户显示图像文本,但 TTS 不会大声朗读。 OCR 功能运行良好,图像中的文本存储在“multipleBlockText”变量中。
已解决!:
与其尝试在 detectText()
之后调用 TTS.speak()
函数,不如在 detectText 函数内部这样调用:
// in function detectText()
...
for (Text.TextBlock block: text.getTextBlocks()) { // For loop for each paragraph
String blockText = block.getText(); // Local scope store for text detected
multipleBlockText = multipleBlockText + blockText + " "; // Concat blocks to one string
}
detectedText.setText(multipleBlockText); // Displays text to user
textReader.speak(multipleBlockText, TextToSpeech.QUEUE_FLUSH, null);
}
我正在开发一个应用程序,它使用 MLKit 的 OCR 功能从图像中读取文本,将其显示给用户,然后使用 Android 的 TTS,但它似乎无法正常工作。
private TextToSpeech textReader; // Instance of Android's built in TTS
private String multipleBlockText; // Empty to store multiple blocks
// Initialise TTS
textReader = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
textReader.setLanguage(Locale.UK); // Sets language to US, English.
}
});
// OCR code goes here
@Override
public void onClick(View v) {
try {
detectText(); // Calls function for OCR from LKit library
// Reads text
textReader.speak(text, TextToSpeech.QUEUE_FLUSH, null);
} catch(Exception error){ // Error handling: Prevents app crash on no text readable
detectedText.setText("Error!");
}
}
我也在我的清单中声明了 TTS:
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.TTS_SERVICE" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
但是当我 运行 我的应用程序时,它会向用户显示图像文本,但 TTS 不会大声朗读。 OCR 功能运行良好,图像中的文本存储在“multipleBlockText”变量中。
已解决!:
与其尝试在 detectText()
之后调用 TTS.speak()
函数,不如在 detectText 函数内部这样调用:
// in function detectText()
...
for (Text.TextBlock block: text.getTextBlocks()) { // For loop for each paragraph
String blockText = block.getText(); // Local scope store for text detected
multipleBlockText = multipleBlockText + blockText + " "; // Concat blocks to one string
}
detectedText.setText(multipleBlockText); // Displays text to user
textReader.speak(multipleBlockText, TextToSpeech.QUEUE_FLUSH, null);
}