sivaprasad1984
24th April 2017, 05:42
Hi everyone,
I have a problem with google speech implementation in Qt (local audio file from my PC).
I got QtNetwork reply as network error(contentNotFoundError). google error string received as "Error transferring https://speech.googleapis.com/v1/speech:syncrecognize?key=mykey - server replied: Not Found".
My Qt code is below.
Any help is appreciated.
PrepareJsonAndPost()
{
QString path = QCoreApplication::applicationDirPath() + "/" + "testAudio.wav";
QFile file(path);
bool fileOpenStatus = file.open(QIODevice::ReadOnly);
QByteArray byteArray = file.readAll();
QString jsonData = byteArray.toBase64();
convertAudioToSpeech(jsonData);
}
//Json request Post to google cloud
convertAudioToSpeech(QString jsonData)
{
QNetworkRequest request(QUrl("https://speech.googleapis.com/v1/speech:recognize?key=myAPIKey"));
request.setHeader(QNetworkRequest::ContentTypeHead er, "application/json");
QLoggingCategory::setFilterRules("qt.network.ssl.w arning=false");
QJsonObject jsonObject;
QJsonObject configObject;
configObject.insert("encoding", "LINEAR16");
configObject.insert("sampleRateHertz", 16000);
configObject.insert("languageCode", "en-US");
jsonObject.insert("config",configObject);
QJsonObject audioObject;
audioObject.insert("content", jsonData);
jsonObject.insert("audio",audioObject);
QNetworkAccessManager *nam = new QNetworkAccessManager(this);
QJsonDocument jsonDoc(jsonObject);
QByteArray jsonBytes = jsonDoc.toJson();
QNetworkReply *reply;
//QEventLoop loop;
reply= nam->post(request, jsonBytes);
while (!reply->isFinished()) {
qApp->processEvents();
}
if (reply->error() == QNetworkReply::NoError)
{
QByteArray response_data = reply->readAll();
QJsonDocument document = QJsonDocument::fromJson(response_data);
qDebug() << "OutPut : " << document.toJson(QJsonDocument::Compact);
}
else // something went wrong
{
qDebug() << "Json File Failed to Load : " << filename;
qDebug() << "Error : " << reply->errorString();
qDebug() << "Error Code : " << reply->error();
}
}
I have a problem with google speech implementation in Qt (local audio file from my PC).
I got QtNetwork reply as network error(contentNotFoundError). google error string received as "Error transferring https://speech.googleapis.com/v1/speech:syncrecognize?key=mykey - server replied: Not Found".
My Qt code is below.
Any help is appreciated.
PrepareJsonAndPost()
{
QString path = QCoreApplication::applicationDirPath() + "/" + "testAudio.wav";
QFile file(path);
bool fileOpenStatus = file.open(QIODevice::ReadOnly);
QByteArray byteArray = file.readAll();
QString jsonData = byteArray.toBase64();
convertAudioToSpeech(jsonData);
}
//Json request Post to google cloud
convertAudioToSpeech(QString jsonData)
{
QNetworkRequest request(QUrl("https://speech.googleapis.com/v1/speech:recognize?key=myAPIKey"));
request.setHeader(QNetworkRequest::ContentTypeHead er, "application/json");
QLoggingCategory::setFilterRules("qt.network.ssl.w arning=false");
QJsonObject jsonObject;
QJsonObject configObject;
configObject.insert("encoding", "LINEAR16");
configObject.insert("sampleRateHertz", 16000);
configObject.insert("languageCode", "en-US");
jsonObject.insert("config",configObject);
QJsonObject audioObject;
audioObject.insert("content", jsonData);
jsonObject.insert("audio",audioObject);
QNetworkAccessManager *nam = new QNetworkAccessManager(this);
QJsonDocument jsonDoc(jsonObject);
QByteArray jsonBytes = jsonDoc.toJson();
QNetworkReply *reply;
//QEventLoop loop;
reply= nam->post(request, jsonBytes);
while (!reply->isFinished()) {
qApp->processEvents();
}
if (reply->error() == QNetworkReply::NoError)
{
QByteArray response_data = reply->readAll();
QJsonDocument document = QJsonDocument::fromJson(response_data);
qDebug() << "OutPut : " << document.toJson(QJsonDocument::Compact);
}
else // something went wrong
{
qDebug() << "Json File Failed to Load : " << filename;
qDebug() << "Error : " << reply->errorString();
qDebug() << "Error Code : " << reply->error();
}
}