diff options
author | Dominik Wenger <domonoky@googlemail.com> | 2008-01-13 13:51:33 +0000 |
---|---|---|
committer | Dominik Wenger <domonoky@googlemail.com> | 2008-01-13 13:51:33 +0000 |
commit | 62f7f9e5504149d644a1d8db8b22a41621604c66 (patch) | |
tree | ab9c3e357dd416d2c95d77842b214609e90e5f5a | |
parent | bf6d5cce683b94933ea013f7b0bfc5ec60a7fe16 (diff) | |
download | rockbox-62f7f9e5504149d644a1d8db8b22a41621604c66.tar.gz rockbox-62f7f9e5504149d644a1d8db8b22a41621604c66.zip |
rbutil: improve voice creation: better parser for genlang output. Make progressbar working while voicegeneration. Sort the voice language list. Make the rbutil Translations built in. (run lrelease before make)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16075 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | rbutil/rbutilqt/createvoicewindow.cpp | 1 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutil.ini | 3 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutilqt.qrc | 7 | ||||
-rw-r--r-- | rbutil/rbutilqt/voicefile.cpp | 102 |
4 files changed, 74 insertions, 39 deletions
diff --git a/rbutil/rbutilqt/createvoicewindow.cpp b/rbutil/rbutilqt/createvoicewindow.cpp index b8a14498de..3ae489c7c7 100644 --- a/rbutil/rbutilqt/createvoicewindow.cpp +++ b/rbutil/rbutilqt/createvoicewindow.cpp @@ -82,6 +82,7 @@ void CreateVoiceWindow::setDeviceSettings(QSettings *dev) } devices->endGroup(); + languages.sort(); ui.comboLanguage->addItems(languages); // set saved lang ui.comboLanguage->setCurrentIndex(ui.comboLanguage->findText(userSettings->value("voicelanguage").toString())); diff --git a/rbutil/rbutilqt/rbutil.ini b/rbutil/rbutilqt/rbutil.ini index 2f2e904ab4..562106ee15 100644 --- a/rbutil/rbutilqt/rbutil.ini +++ b/rbutil/rbutilqt/rbutil.ini @@ -434,9 +434,12 @@ bootloadername=firmware.mi4 resolution=132x80x16 manualname= brand=Sandisk +usbid=0x07817450 +usbid=0x07817451 voicename=sansac200 targetid=30 + [languages] lang1=africaans lang2=bulgarian diff --git a/rbutil/rbutilqt/rbutilqt.qrc b/rbutil/rbutilqt/rbutilqt.qrc index 71e4c93d19..3f544291ff 100644 --- a/rbutil/rbutilqt/rbutilqt.qrc +++ b/rbutil/rbutilqt/rbutilqt.qrc @@ -36,4 +36,11 @@ <qresource prefix="/ini" > <file>rbutil.ini</file> </qresource> + <qresource prefix="/lang" > + <file>rbutil_de.qm</file> + <file>rbutil_tr.qm</file> + <file>rbutil_fr.qm</file> + <file>rbutil_zh_CN.qm</file> + <file>rbutil_zh_TW.qm</file> + </qresource> </RCC> diff --git a/rbutil/rbutilqt/voicefile.cpp b/rbutil/rbutilqt/voicefile.cpp index 6c80400a68..8fbac75c75 100644 --- a/rbutil/rbutilqt/voicefile.cpp +++ b/rbutil/rbutilqt/voicefile.cpp @@ -38,7 +38,7 @@ bool VoiceFileCreator::createVoiceFile(ProgressloggerInterface* logger) { m_abort = false; m_logger = logger; - m_logger->addItem("Starting Voicefile generation",LOGINFO); + m_logger->addItem(tr("Starting Voicefile generation"),LOGINFO); // test if tempdir exists if(!QDir(QDir::tempPath()+"/rbvoice/").exists()) @@ -52,8 +52,7 @@ bool VoiceFileCreator::createVoiceFile(ProgressloggerInterface* logger) QFile info(m_mountpoint+"/.rockbox/rockbox-info.txt"); if(!info.open(QIODevice::ReadOnly)) { - m_logger->addItem("failed to open rockbox-info.txt",LOGERROR); - m_logger->abort(); + m_logger->addItem(tr("failed to open rockbox-info.txt"),LOGERROR); return false; } @@ -141,7 +140,7 @@ void VoiceFileCreator::downloadDone(bool error) QFile genlang(filename); if(!genlang.open(QIODevice::ReadOnly)) { - m_logger->addItem("failed to open downloaded file",LOGERROR); + m_logger->addItem(tr("failed to open downloaded file"),LOGERROR); m_logger->abort(); return; } @@ -152,7 +151,7 @@ void VoiceFileCreator::downloadDone(bool error) if(!m_tts->start()) { - m_logger->addItem("Init of TTS engine failed",LOGERROR); + m_logger->addItem(tr("Init of TTS engine failed"),LOGERROR); m_logger->abort(); return; } @@ -163,49 +162,84 @@ void VoiceFileCreator::downloadDone(bool error) if(!m_enc->start()) { - m_logger->addItem("Init of Encoder engine failed",LOGERROR); + m_logger->addItem(tr("Init of Encoder engine failed"),LOGERROR); m_tts->stop(); m_logger->abort(); return; } QApplication::processEvents(); - connect(m_logger,SIGNAL(aborted()),this,SLOT(abort())); - QStringList mp3files; - + + //read in downloaded file + QList<QPair<QString,QString> > voicepairs; QTextStream in(&genlang); in.setCodec("UTF-8"); - - bool emptyfile = true; + QString id, voice; + bool idfound = false; + bool voicefound=false; while (!in.atEnd()) { + QString line = in.readLine(); + if(line.contains("id:")) //ID found + { + id = line.remove("id:").remove('"').trimmed(); + idfound = true; + } + else if(line.contains("voice:")) // voice found + { + voice = line.remove("voice:").remove('"').trimmed(); + voicefound=true; + } + + if(idfound && voicefound) + { + voicepairs.append(QPair<QString,QString>(id,voice)); + idfound=false; + voicefound=false; + } + } + genlang.close(); + + // check for empty list + if(voicepairs.size() == 0) + { + m_logger->addItem(tr("The downloaded file was empty!"),LOGERROR); + m_logger->abort(); + m_tts->stop(); + return; + } + + m_logger->setProgressMax(voicepairs.size()); + m_logger->setProgressValue(0); + + // create voice clips + QStringList mp3files; + for(int i=0; i< voicepairs.size(); i++) + { if(m_abort) { m_logger->addItem("aborted.",LOGERROR); - break; + m_logger->abort(); + m_tts->stop(); + return; } - - QString comment = in.readLine(); - QString id = in.readLine(); - QString voice = in.readLine(); - id = id.remove("id:").remove('"').trimmed(); - voice = voice.remove("voice:").remove('"').trimmed(); - - QString wavname = m_path + "/" + id + ".wav"; - QString toSpeak = voice; - QString encodedname = m_path + "/" + id +".mp3"; + m_logger->setProgressValue(i); + + QString wavname = m_path + "/" + voicepairs.at(i).first + ".wav"; + QString toSpeak = voicepairs.at(i).second; + QString encodedname = m_path + "/" + voicepairs.at(i).first +".mp3"; // todo PAUSE - if(id == "VOICE_PAUSE") + if(voicepairs.at(i).first == "VOICE_PAUSE") { QFile::copy(":/builtin/builtin/VOICE_PAUSE.wav",m_path + "/VOICE_PAUSE.wav"); } else { - if(voice == "") continue; + if(toSpeak == "") continue; m_logger->addItem(tr("creating ")+toSpeak,LOGINFO); QApplication::processEvents(); @@ -222,25 +256,15 @@ void VoiceFileCreator::downloadDone(bool error) // remove the wav file QFile::remove(wavname); // remember the mp3 file for later removing - mp3files << encodedname; - // remember that we have done something - emptyfile = false; - - } - genlang.close(); - - if(emptyfile) - { - m_logger->addItem(tr("The downloaded file was empty!"),LOGERROR); - m_logger->abort(); - return; + mp3files << encodedname; } + //make voicefile FILE* ids2 = fopen(filename.toUtf8(), "r"); if (ids2 == NULL) { - m_logger->addItem("Error opening downloaded file",LOGERROR); + m_logger->addItem(tr("Error opening downloaded file"),LOGERROR); m_logger->abort(); return; } @@ -248,7 +272,7 @@ void VoiceFileCreator::downloadDone(bool error) FILE* output = fopen(QString(m_mountpoint + "/.rockbox/langs/" + m_lang + ".voice").toUtf8(), "wb"); if (output == NULL) { - m_logger->addItem("Error opening output file",LOGERROR); + m_logger->addItem(tr("Error opening output file"),LOGERROR); return; } @@ -262,7 +286,7 @@ void VoiceFileCreator::downloadDone(bool error) m_logger->setProgressMax(100); m_logger->setProgressValue(100); - m_logger->addItem("successfully created.",LOGOK); + m_logger->addItem(tr("successfully created."),LOGOK); m_logger->abort(); } |