पर टेक्स्टटॉस्पेच.speak() पर प्रतिक्रिया करने के लिए फियोयो से 6 सेकंड अधिक लगता है। हाल ही में एक एंड्रॉइड का एक एंड्रॉइड संस्करण चलाने वाले फोन पर, टेक्स्टटॉस्पेक इंजन को पहली बार कॉल करने पर प्रतिक्रिया करने के लिए लगभग 6 सेकंड लग सकते हैं एक पुराने फोन के लिए।किटकैट को पहले कॉल
मेरा परीक्षण कोड नीचे दिखाया गया है। (संपादित: एंड्रॉइड 4.0.3 आइस क्रीम सैंडविच, एपीआई 15 और ऊपर के लिए वैकल्पिक कोड, अंत में दिखाया गया है।)
1 वर्षीय मोटोरोला मोटो जी पर 4.4.4 किटकैट चल रहा है, इसमें 7 सेकंड से अधिक समय लग सकता है 0Tशब्द "प्रारंभ" पर पहला कॉल पूरा करने के लिए टेक्स्टटॉस्पेच इंजन। यहां मेरे कोड का आउटपुट है।
D/speak﹕ call: 1415501851978
D/speak﹕ done: 1415501859122, delay: 7144
पुराने 3 वर्ष Samsung SGH-T499Y 2.2 Froyo चल रहा, यह एक दूसरे से भी कम समय बोल खत्म करने के लिए:
D/speak﹕ call: 1415502283050
D/speak﹕ done: 1415502283900, delay: 850
वहाँ क्या इस 6- दौरान हो रहा है की खोज के लिए एक रास्ता है दूसरी देरी?
क्या नया (और अनुमानतः तेज़) डिवाइस अधिक तेज़ी से प्रतिक्रिया करने के लिए कोई तरीका है?
package com.example.speak
import android.app.Activity;
import android.speech.tts.TextToSpeech;
import android.os.Bundle;
import android.util.Log;
import java.util.HashMap;
import java.util.Locale;
public class MainActivity extends Activity implements TextToSpeech.OnInitListener,
TextToSpeech.OnUtteranceCompletedListener {
private final String TAG = "speak";
private Activity activity;
private TextToSpeech tts;
private long launchTime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tts = new TextToSpeech(getApplicationContext(), this);
}
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
tts.setOnUtteranceCompletedListener(this);
tts.setLanguage(Locale.UK);
ttsSay("Started");
}
}
private void ttsSay(String toSpeak) {
int mode = TextToSpeech.QUEUE_FLUSH;
HashMap hashMap = new HashMap<String, String>();
hashMap.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, TAG);
launchTime = System.currentTimeMillis();
Log.d(TAG, "call: " + launchTime);
tts.speak(toSpeak, mode, hashMap);
}
public void onUtteranceCompleted(String utteranceID) {
long millis = System.currentTimeMillis();
Log.d(TAG, "done: " + millis + ", delay: " + (millis - launchTime));
}
}
संपादित करें: आइस क्रीम सैंडविच 4.0.3, एपीआई 15, एंड्रॉयड UtteranceProgressListener प्रदान करता है, जो समय के लिए दोनों शुरुआत और पाठ से वाक् प्लेबैक के अंत इस्तेमाल किया जा सकता के साथ शुरू। निम्नलिखित Froyo के साथ संगत नहीं है;
package com.example.announceappprogress;
import android.app.Activity;
import android.speech.tts.TextToSpeech;
import android.os.Bundle;
import android.speech.tts.UtteranceProgressListener;
import android.util.Log;
import java.util.HashMap;
import java.util.Locale;
public class MainActivity extends Activity implements TextToSpeech.OnInitListener {
private final String TAG = "speak";
private TextToSpeech tts;
private long launchTime;
private long startTime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tts = new TextToSpeech(getApplicationContext(), this);
tts.setOnUtteranceProgressListener(mProgressListener);
}
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
tts.setLanguage(Locale.UK);
ttsSay("Started");
}
}
private void ttsSay(String toSpeak) {
int mode = TextToSpeech.QUEUE_FLUSH;
HashMap hashMap = new HashMap<String, String>();
hashMap.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, TAG);
launchTime = System.currentTimeMillis();
Log.d(TAG, "called: " + launchTime);
tts.speak(toSpeak, mode, hashMap);
}
private final UtteranceProgressListener mProgressListener = new UtteranceProgressListener() {
@Override
public void onStart(String utteranceId) {
startTime = System.currentTimeMillis();
Log.d(TAG, "started: " + startTime + ", delay: " + (startTime - launchTime));
}
@Override
public void onError(String utteranceId) {} // Do nothing.
@Override
public void onDone(String utteranceId) {
long millis = System.currentTimeMillis();
Log.d(TAG, "done: " + millis + ", total: " + (millis - launchTime) + ", duration: " + (millis - startTime));
}
};
}
यहाँ उत्पादन का एक नमूना है कि इस 4.4.4 किटकैट चल मोटोरोला मोटो जी पर देता है:
D/speak﹕ called: 1415654293442
D/speak﹕ started: 1415654299287, delay: 5845
D/speak﹕ done: 1415654299995, total: 6553, duration: 708
आपके अंतर्दृष्टिपूर्ण उत्तर के लिए धन्यवाद। निश्चित रूप से नए फोन पर आवाज कम ऑडियो कलाकृतियों है। टीटीएस इंजन इंटरनेट कनेक्शन के साथ भी काम करता है, इसलिए क्लाउड-आधारित सेवा का नियम है। मैं उच्चारण प्रगति की शुरुआत और समाप्ति समय प्राप्त करने के लिए कोड जोड़ूंगा, और देख सकता हूं कि इससे क्या किया जा सकता है। –