Advertisement
dlangu0393

[GoogleSpeechAPI]mainwidget

Jan 24th, 2012
1,114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Init Speech Input
  2. void mainWidget::initializeAudioInput()
  3. {
  4.         speechInput_AudioFormat.setFrequency(16000);
  5.         speechInput_AudioFormat.setChannels(1);
  6.         speechInput_AudioFormat.setSampleSize(16);
  7.         speechInput_AudioFormat.setSampleType(QAudioFormat::SignedInt);
  8.         speechInput_AudioFormat.setByteOrder(QAudioFormat::LittleEndian);
  9.         speechInput_AudioFormat.setCodec("audio/pcm");
  10.  
  11.         speechInput_AudioDeviceInfo = QAudioDeviceInfo::defaultInputDevice();
  12.  
  13.         speechInput_AudioInfo  = new AudioInfo(speechInput_AudioFormat, this, "./data/tmp/speechInput.wav");
  14.         connect(speechInput_AudioInfo, SIGNAL(update()), SLOT(refreshRender()));
  15.  
  16.         //createAudioInput();
  17. }
  18.  
  19. // Create Audio Input
  20. void mainWidget::createAudioInput()
  21. {
  22.         speechInput_AudioInput = new QAudioInput(speechInput_AudioDeviceInfo, speechInput_AudioFormat, this);
  23.         speechInput_AudioInfo->start();
  24.         speechInput_AudioInput->start(speechInput_AudioInfo);
  25. }
  26.  
  27. // Stop Audio Input
  28. void mainWidget::stopAudioInput()
  29. {
  30.         speechInput_AudioInput->stop();
  31.         speechInput_AudioInfo->stop();
  32.  
  33.         speechInput_AudioInput->deleteLater();
  34. }
  35.  
  36. // Refresh Render
  37. void mainWidget::refreshRender()
  38. {
  39.         ui.widget_SpeechRender->setLevel(speechInput_AudioInfo->level());
  40.         ui.widget_SpeechRender->repaint();
  41. }
  42.  
  43. // Send Request
  44. void mainWidget::flacEncoderFinished(int exitCode, QProcess::ExitStatus exitStatus)
  45. {
  46.         if (!exitCode)
  47.         {
  48.                 QByteArray flacData = flacEncoder->readAll();
  49.                 protocol->Request_SPEECH(flacData);
  50.         }
  51.         flacEncoder->deleteLater();
  52. }
  53.  
  54. // Speech Input Button - Start Speech
  55. void mainWidget::on_pushButton_Speech_clicked()
  56. {
  57.         ui.frame_Speech->show();
  58.         ui.textEdit_Input->setReadOnly(true);
  59.         createAudioInput();
  60.         QTimer::singleShot(5000,this,SLOT(on_pushButton_SpeechCancel_clicked()));
  61. }
  62.  
  63. // Speech Input Button - Stop Speech
  64. // Call flacEncoder
  65. void mainWidget::on_pushButton_SpeechCancel_clicked()
  66. {
  67.         if (!ui.frame_Speech->isVisible())
  68.         {
  69.                 return;
  70.         }
  71.         ui.frame_Speech->hide();
  72.        
  73.         stopAudioInput();
  74.         //delete speechInput_AudioInput;
  75.        
  76.         ui.label_Speech_Waiting->setText(QString("?????????"));
  77.         ui.frame_Speech_Waiting->show();
  78.  
  79.         QString program = "./lib/flac.exe";
  80.  
  81.         /*
  82.          *      flac.exe -c --totally-silent -f -8 test.wav
  83.          */
  84.         QStringList arguments;
  85.         arguments << "--totally-silent" << "-c" << "-f" << "-8" << QApplication::applicationDirPath() + "/data/tmp/speechInput.wav";
  86.        
  87.         flacEncoder = new QProcess(this);
  88.         flacEncoder->start(program, arguments);
  89.         connect(flacEncoder,SIGNAL(finished(int,QProcess::ExitStatus)),this,SLOT(flacEncoderFinished(int, QProcess::ExitStatus)));
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement