Advertisement
osipyonok

Speech recognizer

Jul 24th, 2016
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.83 KB | None | 0 0
  1. // Praktika.cpp: определяет точку входа для консольного приложения.
  2. #include "stdafx.h" //для VS2010
  3. #include<cstdio>  
  4. #include<cstring>  
  5. #include<iostream>  
  6. #include<algorithm>  
  7. #include<map>  
  8. #include<queue>  
  9. #include<stack>  
  10. #include<cmath>  
  11. #include<cctype>  
  12. #include<ctime>  
  13. #include<cstdlib>  
  14. #include<string>  
  15. #include<vector>  
  16. #include<set>  
  17. #include<bitset>
  18. #include<fstream>
  19. #include<sstream>
  20. #include"curl/curl.h"
  21. #pragma comment(lib , "curllib.lib")
  22. #define INF 1000010000
  23. #define nl '\n'
  24. #define pb push_back
  25. #define ppb pop_back
  26. #define mp make_pair
  27. #define fi first
  28. #define se second
  29. #define pii pair<int,int>
  30. #define pdd pair<double,double>
  31. #define all(c) (c).begin(), (c).end()
  32. #define SORT(c) sort(all(c))
  33. #define sz(c) (c).size()
  34. #define rep(i,n) for( int i = 0; i < n; ++i )
  35. #define repi(i,n) for( int i = 1 ; i <= n; ++i )
  36. #define repn(i,n) for( int i = n - 1 ; i >= 0 ; --i )
  37. #define repf(j,i,n) for( int j = i ; j < n ; ++j )
  38. #define die(s) {std::cout << s << nl;}
  39. #define dier(s) {std::cout << s; return 0;}
  40. #define vi vector<int>
  41. typedef long long ll;
  42. using namespace std;
  43. const string KEY = "dd5f5efe-af4e-4edd-b106-a16382946610";
  44.  
  45. inline size_t write_response_data(char *ptr , size_t size , size_t nmemb , void *userdata){
  46.     stringstream* s = (stringstream*)userdata;
  47.     size_t n = size * nmemb;  
  48.     s -> write(ptr, n);
  49.     return n;
  50. }
  51.  
  52. inline size_t read_request_data(char *ptr, size_t size, size_t nmemb, void *userdata){
  53.     ifstream* f = (ifstream*)userdata;
  54.     size_t n = size * nmemb;  
  55.     f -> read(ptr, n);
  56.     size_t result = f -> gcount();  
  57.     return result;
  58. }
  59.  
  60. string FILE_PATH = "C:\\Users\\Max\\Documents\\Visual Studio 2010\\Projects\\Praktika\\Praktika\\123.wav";
  61. string Alpha = "";
  62.  
  63. inline void InitAlpha(){
  64.     if(Alpha.size())return;
  65.     for(char ch = '0' ; ch <= '9' ; ++ch) Alpha += ch;
  66.     for(char ch = 'a' ; ch <= 'f' ; ++ch) Alpha += ch;
  67. }
  68.  
  69. inline string GenUUID(){
  70.     if(Alpha.size() == 0)InitAlpha();
  71.     string ret = "";
  72.     for(int i = 0 ; i < 32 ; ++i){
  73.         int t = rand() % Alpha.size();
  74.         ret += Alpha[t];
  75.     }
  76.     return ret;
  77. }
  78.  
  79.  
  80. int main(){
  81.     ios_base::sync_with_stdio(false);
  82.     cin.tie(NULL);
  83.     cout.precision(0);
  84.     setlocale(LC_ALL , NULL);
  85.     CURL *curl = NULL;
  86.     curl = curl_easy_init();
  87.     if(curl){
  88.         curl_easy_setopt(curl , CURLOPT_HEADER , 1);
  89.         curl_easy_setopt(curl , CURLOPT_POST , 1);
  90.         curl_easy_setopt(curl , CURLOPT_VERBOSE , 1);
  91.         curl_easy_setopt(curl , CURLOPT_IPRESOLVE , CURL_IPRESOLVE_V4);
  92.  
  93.         struct curl_slist *headers = NULL;
  94.  
  95.         headers = curl_slist_append(headers , "Content-Type: audio/x-wav");
  96.         curl_easy_setopt(curl , CURLOPT_HTTPHEADER , headers);
  97.  
  98.         curl_easy_setopt(curl , CURLOPT_USERAGENT , "Dalvik/1.2.0 (Linux; U; Android 2.2.2; LG-P990 Build/FRG83G");
  99.         curl_easy_setopt(curl , CURLOPT_URL , "asr.yandex.net/asr_xml?key=" + KEY + "&uuid=" + GenUUID() + "&topic=notes&lang=ru-RU");
  100.  
  101.         ifstream fileStream(FILE_PATH , ifstream::binary);
  102.         fileStream.seekg(0 , fileStream.end);
  103.         int length = fileStream.tellg();
  104.         fileStream.seekg(0 , fileStream.beg);
  105.  
  106.         curl_easy_setopt(curl , CURLOPT_READFUNCTION , &read_request_data);
  107.         curl_easy_setopt(curl , CURLOPT_POSTFIELDSIZE , length);
  108.         curl_easy_setopt(curl , CURLOPT_READDATA , &fileStream);
  109.  
  110.         stringstream contentStream;
  111.  
  112.         curl_easy_setopt(curl , CURLOPT_WRITEFUNCTION , &write_response_data);
  113.         curl_easy_setopt(curl , CURLOPT_WRITEDATA , &contentStream);
  114.  
  115.         CURLcode code = curl_easy_perform(curl);
  116.  
  117.         unsigned httpCode;
  118.         curl_easy_getinfo(curl , CURLINFO_HTTP_CODE , &httpCode);
  119.         stringstream msg;
  120.         msg << "Http code is " << httpCode;
  121.         cout << contentStream.str();
  122.         ofstream fout("output.txt");
  123.         fout << contentStream.str();
  124.         fout.close();
  125.         curl_free(headers);
  126.         curl_easy_cleanup(curl);
  127.     }
  128.     system("Pause");
  129.   return 0;
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement