You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

execute_test.cc 113 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238
  1. /**
  2. * Copyright 2020-2021 Huawei Technologies Co., Ltd
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #include "common/common.h"
  17. #include "include/api/types.h"
  18. #include "minddata/dataset/core/de_tensor.h"
  19. #include "minddata/dataset/include/dataset/audio.h"
  20. #include "minddata/dataset/include/dataset/execute.h"
  21. #include "minddata/dataset/include/dataset/transforms.h"
  22. #include "minddata/dataset/include/dataset/audio.h"
  23. #include "minddata/dataset/include/dataset/vision.h"
  24. #include "minddata/dataset/include/dataset/audio.h"
  25. #include "minddata/dataset/include/dataset/text.h"
  26. #include "minddata/dataset/text/char_n_gram.h"
  27. #include "minddata/dataset/text/fast_text.h"
  28. #include "minddata/dataset/text/glove.h"
  29. #include "minddata/dataset/text/vectors.h"
  30. #include "utils/log_adapter.h"
  31. using namespace mindspore::dataset;
  32. using mindspore::LogStream;
  33. using mindspore::dataset::CharNGram;
  34. using mindspore::dataset::FastText;
  35. using mindspore::dataset::GloVe;
  36. using mindspore::dataset::Vectors;
  37. using mindspore::ExceptionType::NoExceptionType;
  38. using mindspore::MsLogLevel::INFO;
  39. class MindDataTestExecute : public UT::DatasetOpTesting {
  40. protected:
  41. };
  42. TEST_F(MindDataTestExecute, TestAllpassBiquadWithEager) {
  43. MS_LOG(INFO) << "Doing MindDataTestExecute-TestAllpassBiquadWithEager.";
  44. // Original waveform
  45. std::vector<float> labels = {
  46. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  47. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  48. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  49. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  50. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  51. std::shared_ptr<Tensor> input;
  52. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  53. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  54. std::shared_ptr<TensorTransform> allpass_biquad_01 = std::make_shared<audio::AllpassBiquad>(44100, 200);
  55. mindspore::dataset::Execute Transform01({allpass_biquad_01});
  56. // Filtered waveform by allpassbiquad
  57. Status s01 = Transform01(input_02, &input_02);
  58. EXPECT_TRUE(s01.IsOk());
  59. }
  60. TEST_F(MindDataTestExecute, TestAllpassBiquadWithWrongArg) {
  61. MS_LOG(INFO) << "Doing MindDataTestExecute-TestAllpassBiquadWithWrongArg.";
  62. std::vector<double> labels = {
  63. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  64. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  65. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  66. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  67. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  68. std::shared_ptr<Tensor> input;
  69. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  70. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  71. // Check Q
  72. MS_LOG(INFO) << "Q is zero.";
  73. std::shared_ptr<TensorTransform> allpass_biquad_op = std::make_shared<audio::AllpassBiquad>(44100, 200, 0);
  74. mindspore::dataset::Execute Transform01({allpass_biquad_op});
  75. Status s01 = Transform01(input_02, &input_02);
  76. EXPECT_FALSE(s01.IsOk());
  77. }
  78. TEST_F(MindDataTestExecute, TestAdjustGammaEager3Channel) {
  79. MS_LOG(INFO) << "Doing MindDataTestExecute-TestAdjustGammaEager3Channel.";
  80. // Read images
  81. auto image = ReadFileToTensor("data/dataset/apple.jpg");
  82. // Transform params
  83. auto decode = vision::Decode();
  84. auto adjust_gamma_op = vision::AdjustGamma(0.1, 1.0);
  85. auto transform = Execute({decode, adjust_gamma_op});
  86. Status rc = transform(image, &image);
  87. EXPECT_EQ(rc, Status::OK());
  88. }
  89. TEST_F(MindDataTestExecute, TestAdjustGammaEager1Channel) {
  90. MS_LOG(INFO) << "Doing MindDataTestExecute-TestAdjustGammaEager1Channel.";
  91. auto m1 = ReadFileToTensor("data/dataset/apple.jpg");
  92. // Transform params
  93. auto decode = vision::Decode();
  94. auto rgb2gray = vision::RGB2GRAY();
  95. auto adjust_gamma_op = vision::AdjustGamma(0.1, 1.0);
  96. auto transform = Execute({decode, rgb2gray, adjust_gamma_op});
  97. Status rc = transform(m1, &m1);
  98. EXPECT_EQ(rc, Status::OK());
  99. }
  100. TEST_F(MindDataTestExecute, TestAmplitudeToDB) {
  101. MS_LOG(INFO) << "Doing MindDataTestExecute-TestAmplitudeToDB.";
  102. // Original waveform
  103. std::vector<float> labels = {
  104. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  105. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  106. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  107. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  108. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03,
  109. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  110. std::shared_ptr<Tensor> input;
  111. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 2, 2, 3}), &input));
  112. auto input_ms = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  113. std::shared_ptr<TensorTransform> amplitude_to_db_op = std::make_shared<audio::AmplitudeToDB>();
  114. // apply amplitude_to_db
  115. mindspore::dataset::Execute trans({amplitude_to_db_op});
  116. Status status = trans(input_ms, &input_ms);
  117. EXPECT_TRUE(status.IsOk());
  118. }
  119. TEST_F(MindDataTestExecute, TestAmplitudeToDBWrongArgs) {
  120. MS_LOG(INFO) << "Doing MindDataTestExecute-TestAmplitudeToDBWrongArgs.";
  121. // Original waveform
  122. std::vector<float> labels = {
  123. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  124. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  125. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  126. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  127. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  128. std::shared_ptr<Tensor> input;
  129. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  130. auto input_ms = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  131. std::shared_ptr<TensorTransform> amplitude_to_db_op =
  132. std::make_shared<audio::AmplitudeToDB>(ScaleType::kPower, 1.0, -1e-10, 80.0);
  133. // apply amplitude_to_db
  134. mindspore::dataset::Execute trans({amplitude_to_db_op});
  135. Status status = trans(input_ms, &input_ms);
  136. EXPECT_FALSE(status.IsOk());
  137. }
  138. TEST_F(MindDataTestExecute, TestAmplitudeToDBWrongInput) {
  139. MS_LOG(INFO) << "Doing MindDataTestExecute-TestAmplitudeToDBWrongInput.";
  140. // Original waveform
  141. std::vector<float> labels = {
  142. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  143. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  144. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  145. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  146. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  147. std::shared_ptr<Tensor> input;
  148. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({20}), &input));
  149. auto input_ms = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  150. std::shared_ptr<TensorTransform> amplitude_to_db_op = std::make_shared<audio::AmplitudeToDB>();
  151. // apply amplitude_to_db
  152. mindspore::dataset::Execute trans({amplitude_to_db_op});
  153. Status status = trans(input_ms, &input_ms);
  154. EXPECT_FALSE(status.IsOk());
  155. }
  156. TEST_F(MindDataTestExecute, TestComposeTransforms) {
  157. MS_LOG(INFO) << "Doing MindDataTestExecute-TestComposeTransforms.";
  158. // Read images
  159. auto image = ReadFileToTensor("data/dataset/apple.jpg");
  160. // Transform params
  161. std::shared_ptr<TensorTransform> decode = std::make_shared<vision::Decode>();
  162. std::shared_ptr<TensorTransform> center_crop(new vision::CenterCrop({30}));
  163. std::shared_ptr<TensorTransform> rescale = std::make_shared<vision::Rescale>(1. / 3, 0.5);
  164. auto transform = Execute({decode, center_crop, rescale});
  165. Status rc = transform(image, &image);
  166. EXPECT_EQ(rc, Status::OK());
  167. EXPECT_EQ(30, image.Shape()[0]);
  168. EXPECT_EQ(30, image.Shape()[1]);
  169. }
  170. /// Feature: ComputeDeltas
  171. /// Description: test basic function of ComputeDeltas
  172. /// Expectation: get correct number of data
  173. TEST_F(MindDataTestExecute, TestComputeDeltas) {
  174. MS_LOG(INFO) << "Doing MindDataTestExecute-TestComputeDeltas.";
  175. std::shared_ptr<Tensor> input_tensor_;
  176. int win_length = 5;
  177. // create tensor
  178. TensorShape s = TensorShape({2, 15, 7});
  179. // init input vec
  180. std::vector<float> input_vec(s.NumOfElements());
  181. for (int ind = 0; ind < input_vec.size(); ind++) {
  182. input_vec[ind] = std::rand() % (1000) / (1000.0f);
  183. }
  184. ASSERT_OK(Tensor::CreateFromVector(input_vec, s, &input_tensor_));
  185. auto input_ms = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input_tensor_));
  186. std::shared_ptr<TensorTransform> compute_deltas_op = std::make_shared<audio::ComputeDeltas>(win_length);
  187. // apply compute_deltas
  188. mindspore::dataset::Execute Transform({compute_deltas_op});
  189. Status status = Transform(input_ms, &input_ms);
  190. EXPECT_TRUE(status.IsOk());
  191. }
  192. /// Feature: ComputeDeltas
  193. /// Description: test wrong input args of ComputeDeltas
  194. /// Expectation: get nullptr of iterator
  195. TEST_F(MindDataTestExecute, TestComputeDeltasWrongArgs) {
  196. MS_LOG(INFO) << "Doing MindDataTestExecute-TestComputeDeltasWrongArgs.";
  197. std::shared_ptr<Tensor> input_tensor_;
  198. // win_length is less than minimum of 3
  199. int win_length = 2;
  200. // create tensor
  201. TensorShape s = TensorShape({2, 15, 7});
  202. // init input vec
  203. std::vector<float> input_vec(s.NumOfElements());
  204. for (int ind = 0; ind < input_vec.size(); ind++) {
  205. input_vec[ind] = std::rand() % (1000) / (1000.0f);
  206. }
  207. ASSERT_OK(Tensor::CreateFromVector(input_vec, s, &input_tensor_));
  208. auto input_ms = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input_tensor_));
  209. std::shared_ptr<TensorTransform> compute_deltas_op = std::make_shared<audio::ComputeDeltas>(win_length);
  210. mindspore::dataset::Execute Transform({compute_deltas_op});
  211. Status status = Transform(input_ms, &input_ms);
  212. EXPECT_FALSE(status.IsOk());
  213. }
  214. TEST_F(MindDataTestExecute, TestCrop) {
  215. MS_LOG(INFO) << "Doing MindDataTestExecute-TestCrop.";
  216. // Read images
  217. auto image = ReadFileToTensor("data/dataset/apple.jpg");
  218. // Transform params
  219. auto decode = vision::Decode();
  220. auto crop = vision::Crop({10, 30}, {10, 15});
  221. auto transform = Execute({decode, crop});
  222. Status rc = transform(image, &image);
  223. EXPECT_EQ(rc, Status::OK());
  224. EXPECT_EQ(image.Shape()[0], 10);
  225. EXPECT_EQ(image.Shape()[1], 15);
  226. }
  227. TEST_F(MindDataTestExecute, TestFrequencyMasking) {
  228. MS_LOG(INFO) << "Doing MindDataTestExecute-TestFrequencyMasking.";
  229. std::shared_ptr<Tensor> input_tensor_;
  230. TensorShape s = TensorShape({6, 2});
  231. ASSERT_OK(Tensor::CreateFromVector(
  232. std::vector<float>({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f}), s, &input_tensor_));
  233. auto input_tensor = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input_tensor_));
  234. std::shared_ptr<TensorTransform> frequency_masking_op = std::make_shared<audio::FrequencyMasking>(true, 2);
  235. mindspore::dataset::Execute transform({frequency_masking_op});
  236. Status status = transform(input_tensor, &input_tensor);
  237. EXPECT_TRUE(status.IsOk());
  238. }
  239. /// Feature: RandomLighting
  240. /// Description: test RandomLighting Op when alpha=0.1
  241. /// Expectation: the data is processed successfully
  242. TEST_F(MindDataTestExecute, TestRandomLighting) {
  243. MS_LOG(INFO) << "Doing MindDataTestExecute-TestRandomLighting.";
  244. // Read images
  245. auto image = ReadFileToTensor("data/dataset/apple.jpg");
  246. // Transform params
  247. auto decode = vision::Decode();
  248. auto random_lighting_op = vision::RandomLighting(0.1);
  249. auto transform = Execute({decode, random_lighting_op});
  250. Status rc = transform(image, &image);
  251. EXPECT_EQ(rc, Status::OK());
  252. }
  253. TEST_F(MindDataTestExecute, TestTimeMasking) {
  254. MS_LOG(INFO) << "Doing MindDataTestExecute-TestTimeMasking.";
  255. std::shared_ptr<Tensor> input_tensor_;
  256. TensorShape s = TensorShape({2, 6});
  257. ASSERT_OK(Tensor::CreateFromVector(
  258. std::vector<float>({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f}), s, &input_tensor_));
  259. auto input_tensor = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input_tensor_));
  260. std::shared_ptr<TensorTransform> time_masking_op = std::make_shared<audio::TimeMasking>(true, 2);
  261. mindspore::dataset::Execute transform({time_masking_op});
  262. Status status = transform(input_tensor, &input_tensor);
  263. EXPECT_TRUE(status.IsOk());
  264. }
  265. TEST_F(MindDataTestExecute, TestTimeStretchEager) {
  266. MS_LOG(INFO) << "Doing MindDataTestExecute-TestTimeStretchEager.";
  267. std::shared_ptr<Tensor> input_tensor_;
  268. // op param
  269. int freq = 4;
  270. int hop_length = 20;
  271. float rate = 1.3;
  272. int frame_num = 10;
  273. // create tensor
  274. TensorShape s = TensorShape({2, freq, frame_num, 2});
  275. // init input vec
  276. std::vector<float> input_vec(2 * freq * frame_num * 2);
  277. for (int ind = 0; ind < input_vec.size(); ind++) {
  278. input_vec[ind] = std::rand() % (1000) / (1000.0f);
  279. }
  280. ASSERT_OK(Tensor::CreateFromVector(input_vec, s, &input_tensor_));
  281. auto input_ms = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input_tensor_));
  282. std::shared_ptr<TensorTransform> time_stretch_op = std::make_shared<audio::TimeStretch>(hop_length, freq, rate);
  283. // apply timestretch
  284. mindspore::dataset::Execute Transform({time_stretch_op});
  285. Status status = Transform(input_ms, &input_ms);
  286. EXPECT_TRUE(status.IsOk());
  287. }
  288. TEST_F(MindDataTestExecute, TestTimeStretchParamCheck) {
  289. MS_LOG(INFO) << "Doing MindDataTestTimeStretch-TestTimeStretchParamCheck.";
  290. // Create an input
  291. std::shared_ptr<Tensor> input_tensor_;
  292. std::shared_ptr<Tensor> output_tensor;
  293. TensorShape s = TensorShape({1, 4, 3, 2});
  294. ASSERT_OK(Tensor::CreateFromVector(
  295. std::vector<float>({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f,
  296. 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f}),
  297. s, &input_tensor_));
  298. auto input_ms = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input_tensor_));
  299. std::shared_ptr<TensorTransform> time_stretch1 = std::make_shared<audio::TimeStretch>(4, 512, -2);
  300. mindspore::dataset::Execute Transform1({time_stretch1});
  301. Status status = Transform1(input_ms, &input_ms);
  302. EXPECT_FALSE(status.IsOk());
  303. std::shared_ptr<TensorTransform> time_stretch2 = std::make_shared<audio::TimeStretch>(4, -512, 2);
  304. mindspore::dataset::Execute Transform2({time_stretch2});
  305. status = Transform2(input_ms, &input_ms);
  306. EXPECT_FALSE(status.IsOk());
  307. }
  308. TEST_F(MindDataTestExecute, TestTransformInput1) {
  309. MS_LOG(INFO) << "Doing MindDataTestExecute-TestTransformInput1.";
  310. // Test Execute with transform op input using API constructors, with std::shared_ptr<TensorTransform pointers,
  311. // instantiated via mix of make_shared and new
  312. // Read images
  313. auto image = ReadFileToTensor("data/dataset/apple.jpg");
  314. // Define transform operations
  315. std::shared_ptr<TensorTransform> decode = std::make_shared<vision::Decode>();
  316. std::shared_ptr<TensorTransform> resize(new vision::Resize({224, 224}));
  317. std::shared_ptr<TensorTransform> normalize(
  318. new vision::Normalize({0.485 * 255, 0.456 * 255, 0.406 * 255}, {0.229 * 255, 0.224 * 255, 0.225 * 255}));
  319. std::shared_ptr<TensorTransform> hwc2chw = std::make_shared<vision::HWC2CHW>();
  320. mindspore::dataset::Execute Transform({decode, resize, normalize, hwc2chw});
  321. // Apply transform on image
  322. Status rc = Transform(image, &image);
  323. // Check image info
  324. ASSERT_TRUE(rc.IsOk());
  325. ASSERT_EQ(image.Shape().size(), 3);
  326. ASSERT_EQ(image.Shape()[0], 3);
  327. ASSERT_EQ(image.Shape()[1], 224);
  328. ASSERT_EQ(image.Shape()[2], 224);
  329. }
  330. TEST_F(MindDataTestExecute, TestTransformInput2) {
  331. MS_LOG(INFO) << "Doing MindDataTestExecute-TestTransformInput2.";
  332. // Test Execute with transform op input using API constructors, with std::shared_ptr<TensorTransform pointers,
  333. // instantiated via new
  334. // With this way of creating TensorTransforms, we don't need to explicitly delete the object created with the
  335. // "new" keyword. When the shared pointer goes out of scope the object destructor will be called.
  336. // Read image, construct MSTensor from dataset tensor
  337. std::shared_ptr<mindspore::dataset::Tensor> de_tensor;
  338. mindspore::dataset::Tensor::CreateFromFile("data/dataset/apple.jpg", &de_tensor);
  339. auto image = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  340. // Define transform operations
  341. std::shared_ptr<TensorTransform> decode(new vision::Decode());
  342. std::shared_ptr<TensorTransform> resize(new vision::Resize({224, 224}));
  343. std::shared_ptr<TensorTransform> normalize(
  344. new vision::Normalize({0.485 * 255, 0.456 * 255, 0.406 * 255}, {0.229 * 255, 0.224 * 255, 0.225 * 255}));
  345. std::shared_ptr<TensorTransform> hwc2chw(new vision::HWC2CHW());
  346. mindspore::dataset::Execute Transform({decode, resize, normalize, hwc2chw});
  347. // Apply transform on image
  348. Status rc = Transform(image, &image);
  349. // Check image info
  350. ASSERT_TRUE(rc.IsOk());
  351. ASSERT_EQ(image.Shape().size(), 3);
  352. ASSERT_EQ(image.Shape()[0], 3);
  353. ASSERT_EQ(image.Shape()[1], 224);
  354. ASSERT_EQ(image.Shape()[2], 224);
  355. }
  356. TEST_F(MindDataTestExecute, TestTransformInput3) {
  357. MS_LOG(INFO) << "Doing MindDataTestExecute-TestTransformInput3.";
  358. // Test Execute with transform op input using API constructors, with auto pointers
  359. // Read image, construct MSTensor from dataset tensor
  360. std::shared_ptr<mindspore::dataset::Tensor> de_tensor;
  361. mindspore::dataset::Tensor::CreateFromFile("data/dataset/apple.jpg", &de_tensor);
  362. auto image = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  363. // Define transform operations
  364. auto decode = vision::Decode();
  365. mindspore::dataset::Execute Transform1(decode);
  366. auto resize = vision::Resize({224, 224});
  367. mindspore::dataset::Execute Transform2(resize);
  368. // Apply transform on image
  369. Status rc;
  370. rc = Transform1(image, &image);
  371. ASSERT_TRUE(rc.IsOk());
  372. rc = Transform2(image, &image);
  373. ASSERT_TRUE(rc.IsOk());
  374. // Check image info
  375. ASSERT_EQ(image.Shape().size(), 3);
  376. ASSERT_EQ(image.Shape()[0], 224);
  377. ASSERT_EQ(image.Shape()[1], 224);
  378. ASSERT_EQ(image.Shape()[2], 3);
  379. }
  380. TEST_F(MindDataTestExecute, TestTransformInputSequential) {
  381. MS_LOG(INFO) << "Doing MindDataTestExecute-TestTransformInputSequential.";
  382. // Test Execute with transform op input using API constructors, with auto pointers;
  383. // Apply 2 transformations sequentially, including single non-vector Transform op input
  384. // Read image, construct MSTensor from dataset tensor
  385. std::shared_ptr<mindspore::dataset::Tensor> de_tensor;
  386. mindspore::dataset::Tensor::CreateFromFile("data/dataset/apple.jpg", &de_tensor);
  387. auto image = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  388. // Define transform#1 operations
  389. std::shared_ptr<TensorTransform> decode(new vision::Decode());
  390. std::shared_ptr<TensorTransform> resize(new vision::Resize({224, 224}));
  391. std::shared_ptr<TensorTransform> normalize(
  392. new vision::Normalize({0.485 * 255, 0.456 * 255, 0.406 * 255}, {0.229 * 255, 0.224 * 255, 0.225 * 255}));
  393. std::vector<std::shared_ptr<TensorTransform>> op_list = {decode, resize, normalize};
  394. mindspore::dataset::Execute Transform(op_list);
  395. // Apply transform#1 on image
  396. Status rc = Transform(image, &image);
  397. // Define transform#2 operations
  398. std::shared_ptr<TensorTransform> hwc2chw(new vision::HWC2CHW());
  399. mindspore::dataset::Execute Transform2(hwc2chw);
  400. // Apply transform#2 on image
  401. rc = Transform2(image, &image);
  402. // Check image info
  403. ASSERT_TRUE(rc.IsOk());
  404. ASSERT_EQ(image.Shape().size(), 3);
  405. ASSERT_EQ(image.Shape()[0], 3);
  406. ASSERT_EQ(image.Shape()[1], 224);
  407. ASSERT_EQ(image.Shape()[2], 224);
  408. }
  409. TEST_F(MindDataTestExecute, TestTransformDecodeResizeCenterCrop1) {
  410. MS_LOG(INFO) << "Doing MindDataTestExecute-TestTransformDecodeResizeCenterCrop1.";
  411. // Test Execute with Decode, Resize and CenterCrop transform ops input using API constructors, with shared pointers
  412. // Read image, construct MSTensor from dataset tensor
  413. std::shared_ptr<mindspore::dataset::Tensor> de_tensor;
  414. mindspore::dataset::Tensor::CreateFromFile("data/dataset/apple.jpg", &de_tensor);
  415. auto image = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  416. // Define transform operations
  417. std::vector<int32_t> resize_paras = {256, 256};
  418. std::vector<int32_t> crop_paras = {224, 224};
  419. std::shared_ptr<TensorTransform> decode(new vision::Decode());
  420. std::shared_ptr<TensorTransform> resize(new vision::Resize(resize_paras));
  421. std::shared_ptr<TensorTransform> centercrop(new vision::CenterCrop(crop_paras));
  422. std::shared_ptr<TensorTransform> hwc2chw(new vision::HWC2CHW());
  423. std::vector<std::shared_ptr<TensorTransform>> op_list = {decode, resize, centercrop, hwc2chw};
  424. mindspore::dataset::Execute Transform(op_list, MapTargetDevice::kCpu);
  425. // Apply transform on image
  426. Status rc = Transform(image, &image);
  427. // Check image info
  428. ASSERT_TRUE(rc.IsOk());
  429. ASSERT_EQ(image.Shape().size(), 3);
  430. ASSERT_EQ(image.Shape()[0], 3);
  431. ASSERT_EQ(image.Shape()[1], 224);
  432. ASSERT_EQ(image.Shape()[2], 224);
  433. }
  434. TEST_F(MindDataTestExecute, TestUniformAugment) {
  435. // Read images
  436. auto image = ReadFileToTensor("data/dataset/apple.jpg");
  437. std::vector<mindspore::MSTensor> image2;
  438. // Transform params
  439. std::shared_ptr<TensorTransform> decode = std::make_shared<vision::Decode>();
  440. std::shared_ptr<TensorTransform> resize_op(new vision::Resize({16, 16}));
  441. std::shared_ptr<TensorTransform> vertical = std::make_shared<vision::RandomVerticalFlip>();
  442. std::shared_ptr<TensorTransform> horizontal = std::make_shared<vision::RandomHorizontalFlip>();
  443. std::shared_ptr<TensorTransform> uniform_op(new vision::UniformAugment({resize_op, vertical, horizontal}, 3));
  444. auto transform1 = Execute({decode});
  445. Status rc = transform1(image, &image);
  446. ASSERT_TRUE(rc.IsOk());
  447. auto transform2 = Execute({uniform_op});
  448. rc = transform2({image}, &image2);
  449. ASSERT_TRUE(rc.IsOk());
  450. }
  451. TEST_F(MindDataTestExecute, TestBasicTokenizer) {
  452. std::shared_ptr<Tensor> de_tensor;
  453. Tensor::CreateScalar<std::string>("Welcome to China.", &de_tensor);
  454. auto txt = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  455. std::vector<mindspore::MSTensor> txt_result;
  456. // Transform params
  457. std::shared_ptr<TensorTransform> tokenizer =
  458. std::make_shared<text::BasicTokenizer>(false, false, NormalizeForm::kNone, false, true);
  459. // BasicTokenizer has 3 outputs so we need a vector to receive its result
  460. auto transform1 = Execute({tokenizer});
  461. Status rc = transform1({txt}, &txt_result);
  462. ASSERT_EQ(txt_result.size(), 3);
  463. ASSERT_TRUE(rc.IsOk());
  464. }
  465. TEST_F(MindDataTestExecute, TestRotate) {
  466. MS_LOG(INFO) << "Doing MindDataTestExecute-TestRotate.";
  467. // Read images
  468. auto image = ReadFileToTensor("data/dataset/apple.jpg");
  469. // Transform params
  470. auto decode = vision::Decode();
  471. auto rotate = vision::Rotate(10.5);
  472. auto transform = Execute({decode, rotate});
  473. Status rc = transform(image, &image);
  474. EXPECT_EQ(rc, Status::OK());
  475. }
  476. TEST_F(MindDataTestExecute, TestResizeWithBBox) {
  477. auto image = ReadFileToTensor("data/dataset/apple.jpg");
  478. std::shared_ptr<TensorTransform> decode_op = std::make_shared<vision::Decode>();
  479. std::shared_ptr<TensorTransform> resizewithbbox_op =
  480. std::make_shared<vision::ResizeWithBBox>(std::vector<int32_t>{250, 500});
  481. // Test Compute(Tensor, Tensor) method of ResizeWithBBox
  482. auto transform = Execute({decode_op, resizewithbbox_op});
  483. // Expect fail since Compute(Tensor, Tensor) is not a valid behaviour for this Op,
  484. // while Compute(TensorRow, TensorRow) is the correct one.
  485. Status rc = transform(image, &image);
  486. EXPECT_FALSE(rc.IsOk());
  487. }
  488. TEST_F(MindDataTestExecute, TestBandBiquadWithEager) {
  489. MS_LOG(INFO) << "Doing MindDataTestExecute-TestBandBiquadWithEager.";
  490. // Original waveform
  491. std::vector<float> labels = {
  492. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  493. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  494. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  495. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  496. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  497. std::shared_ptr<Tensor> input;
  498. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  499. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  500. std::shared_ptr<TensorTransform> band_biquad_01 = std::make_shared<audio::BandBiquad>(44100, 200);
  501. mindspore::dataset::Execute Transform01({band_biquad_01});
  502. // Filtered waveform by bandbiquad
  503. Status s01 = Transform01(input_02, &input_02);
  504. EXPECT_TRUE(s01.IsOk());
  505. }
  506. TEST_F(MindDataTestExecute, TestBandBiquadWithWrongArg) {
  507. MS_LOG(INFO) << "Doing MindDataTestExecute-TestBandBiquadWithWrongArg.";
  508. std::vector<double> labels = {
  509. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  510. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  511. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  512. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  513. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  514. std::shared_ptr<Tensor> input;
  515. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  516. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  517. // Check Q
  518. MS_LOG(INFO) << "Q is zero.";
  519. std::shared_ptr<TensorTransform> band_biquad_op = std::make_shared<audio::BandBiquad>(44100, 200, 0);
  520. mindspore::dataset::Execute Transform01({band_biquad_op});
  521. Status s01 = Transform01(input_02, &input_02);
  522. EXPECT_FALSE(s01.IsOk());
  523. }
  524. TEST_F(MindDataTestExecute, TestBandpassBiquadWithEager) {
  525. MS_LOG(INFO) << "Doing MindDataTestExecute-TestBandpassBiquadWithEager.";
  526. // Original waveform
  527. std::vector<float> labels = {
  528. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  529. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  530. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  531. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  532. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  533. std::shared_ptr<Tensor> input;
  534. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  535. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  536. std::shared_ptr<TensorTransform> bandpass_biquad_01 = std::make_shared<audio::BandpassBiquad>(44100, 200);
  537. mindspore::dataset::Execute Transform01({bandpass_biquad_01});
  538. // Filtered waveform by bandpassbiquad
  539. Status s01 = Transform01(input_02, &input_02);
  540. EXPECT_TRUE(s01.IsOk());
  541. }
  542. TEST_F(MindDataTestExecute, TestBandpassBiquadWithWrongArg) {
  543. MS_LOG(INFO) << "Doing MindDataTestExecute-TestBandpassBiquadWithWrongArg.";
  544. std::vector<double> labels = {
  545. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  546. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  547. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  548. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  549. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  550. std::shared_ptr<Tensor> input;
  551. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  552. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  553. // Check Q
  554. MS_LOG(INFO) << "Q is zero.";
  555. std::shared_ptr<TensorTransform> bandpass_biquad_op = std::make_shared<audio::BandpassBiquad>(44100, 200, 0);
  556. mindspore::dataset::Execute Transform01({bandpass_biquad_op});
  557. Status s01 = Transform01(input_02, &input_02);
  558. EXPECT_FALSE(s01.IsOk());
  559. }
  560. TEST_F(MindDataTestExecute, TestBandrejectBiquadWithEager) {
  561. MS_LOG(INFO) << "Doing MindDataTestExecute-TestBandrejectBiquadWithEager.";
  562. // Original waveform
  563. std::vector<float> labels = {
  564. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  565. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  566. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  567. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  568. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  569. std::shared_ptr<Tensor> input;
  570. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  571. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  572. std::shared_ptr<TensorTransform> bandreject_biquad_01 = std::make_shared<audio::BandrejectBiquad>(44100, 200);
  573. mindspore::dataset::Execute Transform01({bandreject_biquad_01});
  574. // Filtered waveform by bandrejectbiquad
  575. Status s01 = Transform01(input_02, &input_02);
  576. EXPECT_TRUE(s01.IsOk());
  577. }
  578. TEST_F(MindDataTestExecute, TestBandrejectBiquadWithWrongArg) {
  579. MS_LOG(INFO) << "Doing MindDataTestExecute-TestBandrejectBiquadWithWrongArg.";
  580. std::vector<double> labels = {
  581. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  582. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  583. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  584. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  585. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  586. std::shared_ptr<Tensor> input;
  587. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  588. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  589. // Check Q
  590. MS_LOG(INFO) << "Q is zero.";
  591. std::shared_ptr<TensorTransform> bandreject_biquad_op = std::make_shared<audio::BandrejectBiquad>(44100, 200, 0);
  592. mindspore::dataset::Execute Transform01({bandreject_biquad_op});
  593. Status s01 = Transform01(input_02, &input_02);
  594. EXPECT_FALSE(s01.IsOk());
  595. }
  596. TEST_F(MindDataTestExecute, TestAngleEager) {
  597. MS_LOG(INFO) << "Doing MindDataTestExecute-TestAngleEager.";
  598. std::vector<double> origin = {1.143, 1.3123, 2.632, 2.554, -1.213, 1.3, 0.456, 3.563};
  599. TensorShape input_shape({4, 2});
  600. std::shared_ptr<Tensor> de_tensor;
  601. Tensor::CreateFromVector(origin, input_shape, &de_tensor);
  602. std::shared_ptr<TensorTransform> angle = std::make_shared<audio::Angle>();
  603. auto input = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  604. mindspore::dataset::Execute Transform({angle});
  605. Status s = Transform(input, &input);
  606. ASSERT_TRUE(s.IsOk());
  607. }
  608. TEST_F(MindDataTestExecute, TestRGB2BGREager) {
  609. MS_LOG(INFO) << "Doing MindDataTestExecute-TestRGB2BGREager.";
  610. // Read images
  611. auto image = ReadFileToTensor("data/dataset/apple.jpg");
  612. // Transform params
  613. auto decode = vision::Decode();
  614. auto rgb2bgr_op = vision::RGB2BGR();
  615. auto transform = Execute({decode, rgb2bgr_op});
  616. Status rc = transform(image, &image);
  617. EXPECT_EQ(rc, Status::OK());
  618. }
  619. TEST_F(MindDataTestExecute, TestEqualizerBiquadEager) {
  620. MS_LOG(INFO) << "Doing MindDataTestExecute-TestEqualizerBiquadEager.";
  621. int sample_rate = 44100;
  622. float center_freq = 3.5;
  623. float gain = 5.5;
  624. float Q = 0.707;
  625. std::vector<mindspore::MSTensor> output;
  626. std::shared_ptr<Tensor> test;
  627. std::vector<double> test_vector = {0.8236, 0.2049, 0.3335, 0.5933, 0.9911, 0.2482, 0.3007, 0.9054,
  628. 0.7598, 0.5394, 0.2842, 0.5634, 0.6363, 0.2226, 0.2288};
  629. Tensor::CreateFromVector(test_vector, TensorShape({5, 3}), &test);
  630. auto input = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(test));
  631. std::shared_ptr<TensorTransform> equalizer_biquad(new audio::EqualizerBiquad({sample_rate, center_freq, gain, Q}));
  632. auto transform = Execute({equalizer_biquad});
  633. Status rc = transform({input}, &output);
  634. ASSERT_TRUE(rc.IsOk());
  635. }
  636. TEST_F(MindDataTestExecute, TestEqualizerBiquadParamCheckQ) {
  637. MS_LOG(INFO) << "Doing MindDataTestExecute-TestEqualizerBiquadParamCheckQ.";
  638. std::vector<mindspore::MSTensor> output;
  639. std::shared_ptr<Tensor> test;
  640. std::vector<double> test_vector = {0.1129, 0.3899, 0.7762, 0.2437, 0.9911, 0.8764, 0.4524, 0.9034,
  641. 0.3277, 0.8904, 0.1852, 0.6721, 0.1325, 0.2345, 0.5538};
  642. Tensor::CreateFromVector(test_vector, TensorShape({3, 5}), &test);
  643. auto input = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(test));
  644. // Check Q
  645. std::shared_ptr<TensorTransform> equalizer_biquad_op = std::make_shared<audio::EqualizerBiquad>(44100, 3.5, 5.5, 0);
  646. mindspore::dataset::Execute transform({equalizer_biquad_op});
  647. Status rc = transform({input}, &output);
  648. ASSERT_FALSE(rc.IsOk());
  649. }
  650. TEST_F(MindDataTestExecute, TestEqualizerBiquadParamCheckSampleRate) {
  651. MS_LOG(INFO) << "Doing MindDataTestExecute-TestEqualizerBiquadParamCheckSampleRate.";
  652. std::vector<mindspore::MSTensor> output;
  653. std::shared_ptr<Tensor> test;
  654. std::vector<double> test_vector = {0.5236, 0.7049, 0.4335, 0.4533, 0.0911, 0.3482, 0.3407, 0.9054,
  655. 0.7598, 0.5394, 0.2842, 0.5634, 0.6363, 0.2226, 0.2288, 0.6743};
  656. Tensor::CreateFromVector(test_vector, TensorShape({4, 4}), &test);
  657. auto input = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(test));
  658. // Check sample_rate
  659. std::shared_ptr<TensorTransform> equalizer_biquad_op = std::make_shared<audio::EqualizerBiquad>(0, 3.5, 5.5, 0.7);
  660. mindspore::dataset::Execute transform({equalizer_biquad_op});
  661. Status rc = transform({input}, &output);
  662. ASSERT_FALSE(rc.IsOk());
  663. }
  664. TEST_F(MindDataTestExecute, TestLowpassBiquadEager) {
  665. MS_LOG(INFO) << "Doing MindDataTestExecute-TestLowpassBiquadEager.";
  666. int sample_rate = 44100;
  667. float cutoff_freq = 2000.0;
  668. float Q = 0.6;
  669. std::vector<mindspore::MSTensor> output;
  670. std::shared_ptr<Tensor> test;
  671. std::vector<double> test_vector = {23.5, 13.2, 62.5, 27.1, 15.5, 30.3, 44.9, 25.0,
  672. 11.3, 37.4, 67.1, 33.8, 73.4, 53.3, 93.7, 31.1};
  673. Tensor::CreateFromVector(test_vector, TensorShape({4, 4}), &test);
  674. auto input = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(test));
  675. std::shared_ptr<TensorTransform> lowpass_biquad(new audio::LowpassBiquad({sample_rate, cutoff_freq, Q}));
  676. auto transform = Execute({lowpass_biquad});
  677. Status rc = transform({input}, &output);
  678. ASSERT_TRUE(rc.IsOk());
  679. }
  680. TEST_F(MindDataTestExecute, TestLowpassBiuqadParamCheckQ) {
  681. MS_LOG(INFO) << "Doing MindDataTestExecute-TestLowpassBiuqadParamCheckQ.";
  682. std::vector<mindspore::MSTensor> output;
  683. std::shared_ptr<Tensor> test;
  684. std::vector<double> test_vector = {0.8236, 0.2049, 0.3335, 0.5933, 0.9911, 0.2482, 0.3007, 0.9054,
  685. 0.7598, 0.5394, 0.2842, 0.5634, 0.6363, 0.2226, 0.2288};
  686. Tensor::CreateFromVector(test_vector, TensorShape({5, 3}), &test);
  687. auto input = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(test));
  688. // Check Q
  689. std::shared_ptr<TensorTransform> lowpass_biquad_op = std::make_shared<audio::LowpassBiquad>(44100, 3000.5, 0);
  690. mindspore::dataset::Execute transform({lowpass_biquad_op});
  691. Status rc = transform({input}, &output);
  692. ASSERT_FALSE(rc.IsOk());
  693. }
  694. TEST_F(MindDataTestExecute, TestLowpassBiuqadParamCheckSampleRate) {
  695. MS_LOG(INFO) << "Doing MindDataTestExecute-TestLowpassBiuqadParamCheckSampleRate.";
  696. std::vector<mindspore::MSTensor> output;
  697. std::shared_ptr<Tensor> test;
  698. std::vector<double> test_vector = {0.5, 4.6, 2.2, 0.6, 1.9, 4.7, 2.3, 4.9, 4.7, 0.5, 0.8, 0.9};
  699. Tensor::CreateFromVector(test_vector, TensorShape({6, 2}), &test);
  700. auto input = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(test));
  701. // Check sample_rate
  702. std::shared_ptr<TensorTransform> lowpass_biquad_op = std::make_shared<audio::LowpassBiquad>(0, 2000.5, 0.7);
  703. mindspore::dataset::Execute transform({lowpass_biquad_op});
  704. Status rc = transform({input}, &output);
  705. ASSERT_FALSE(rc.IsOk());
  706. }
  707. TEST_F(MindDataTestExecute, TestComplexNormEager) {
  708. MS_LOG(INFO) << "Doing MindDataTestExecute-TestComplexNormEager.";
  709. // testing
  710. std::shared_ptr<Tensor> input_tensor_;
  711. Tensor::CreateFromVector(std::vector<float>({1.0, 1.0, 2.0, 3.0, 4.0, 4.0}), TensorShape({3, 2}), &input_tensor_);
  712. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input_tensor_));
  713. std::shared_ptr<TensorTransform> complex_norm_01 = std::make_shared<audio::ComplexNorm>(4.0);
  714. // Filtered waveform by complexnorm
  715. mindspore::dataset::Execute Transform01({complex_norm_01});
  716. Status s01 = Transform01(input_02, &input_02);
  717. EXPECT_TRUE(s01.IsOk());
  718. }
  719. TEST_F(MindDataTestExecute, TestContrastWithEager) {
  720. MS_LOG(INFO) << "Doing MindDataTestExecute-TestContrastWithEager.";
  721. // Original waveform
  722. std::vector<float> labels = {4.11, 5.37, 5.85, 5.4, 4.27, 1.861, -1.1291, -4.76, 1.495};
  723. std::shared_ptr<Tensor> input;
  724. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({3, 3}), &input));
  725. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  726. std::shared_ptr<TensorTransform> contrast_01 = std::make_shared<audio::Contrast>();
  727. mindspore::dataset::Execute Transform01({contrast_01});
  728. // Filtered waveform by contrast
  729. Status s01 = Transform01(input_02, &input_02);
  730. EXPECT_TRUE(s01.IsOk());
  731. }
  732. TEST_F(MindDataTestExecute, TestContrastWithWrongArg) {
  733. MS_LOG(INFO) << "Doing MindDataTestExecute-TestContrastWithWrongArg.";
  734. std::vector<double> labels = {-1.007, -5.06, 7.934, 6.683, 1.312, 1.84, 2.246, 2.597};
  735. std::shared_ptr<Tensor> input;
  736. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 4}), &input));
  737. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  738. // Check enhancement_amount
  739. MS_LOG(INFO) << "enhancement_amount is negative.";
  740. std::shared_ptr<TensorTransform> contrast_op = std::make_shared<audio::Contrast>(-10);
  741. mindspore::dataset::Execute Transform01({contrast_op});
  742. Status s01 = Transform01(input_02, &input_02);
  743. EXPECT_FALSE(s01.IsOk());
  744. }
  745. TEST_F(MindDataTestExecute, TestDeemphBiquadWithEager) {
  746. MS_LOG(INFO) << "Doing MindDataTestExecute-TestDeemphBiquadWithEager";
  747. // Original waveform
  748. std::vector<float> labels = {
  749. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  750. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  751. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  752. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  753. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  754. std::shared_ptr<Tensor> input;
  755. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  756. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  757. std::shared_ptr<TensorTransform> deemph_biquad_01 = std::make_shared<audio::DeemphBiquad>(44100);
  758. mindspore::dataset::Execute Transform01({deemph_biquad_01});
  759. // Filtered waveform by deemphbiquad
  760. Status s01 = Transform01(input_02, &input_02);
  761. EXPECT_TRUE(s01.IsOk());
  762. }
  763. TEST_F(MindDataTestExecute, TestDeemphBiquadWithWrongArg) {
  764. MS_LOG(INFO) << "Doing MindDataTestExecute-TestDeemphBiquadWithWrongArg.";
  765. std::vector<double> labels = {0.1, 0.2, 0.3, 0.4, 0.5, 0.6};
  766. std::shared_ptr<Tensor> input;
  767. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({1, 6}), &input));
  768. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  769. // Check sample_rate
  770. MS_LOG(INFO) << "sample_rate is zero.";
  771. std::shared_ptr<TensorTransform> deemph_biquad_op = std::make_shared<audio::DeemphBiquad>(0);
  772. mindspore::dataset::Execute Transform01({deemph_biquad_op});
  773. Status s01 = Transform01(input_02, &input_02);
  774. EXPECT_FALSE(s01.IsOk());
  775. }
  776. // Feature: Gain
  777. // Description: test Gain in eager mode
  778. // Expectation: the data is processed successfully
  779. TEST_F(MindDataTestExecute, TestGainWithEager) {
  780. MS_LOG(INFO) << "Doing MindDataTestExecute-TestGainWithEager.";
  781. // Original waveform
  782. std::vector<float> labels = {
  783. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  784. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  785. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  786. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  787. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  788. std::shared_ptr<Tensor> input;
  789. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  790. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  791. std::shared_ptr<TensorTransform> Gain_01 = std::make_shared<audio::Gain>();
  792. mindspore::dataset::Execute Transform01({Gain_01});
  793. // Filtered waveform by Gain
  794. Status s01 = Transform01(input_02, &input_02);
  795. EXPECT_TRUE(s01.IsOk());
  796. }
  797. TEST_F(MindDataTestExecute, TestHighpassBiquadEager) {
  798. MS_LOG(INFO) << "Doing MindDataTestExecute-TestHighpassBiquadEager.";
  799. int sample_rate = 44100;
  800. float cutoff_freq = 3000.5;
  801. float Q = 0.707;
  802. std::vector<mindspore::MSTensor> output;
  803. std::shared_ptr<Tensor> test;
  804. std::vector<double> test_vector = {0.8236, 0.2049, 0.3335, 0.5933, 0.9911, 0.2482, 0.3007, 0.9054,
  805. 0.7598, 0.5394, 0.2842, 0.5634, 0.6363, 0.2226, 0.2288};
  806. Tensor::CreateFromVector(test_vector, TensorShape({5, 3}), &test);
  807. auto input = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(test));
  808. std::shared_ptr<TensorTransform> highpass_biquad(new audio::HighpassBiquad({sample_rate, cutoff_freq, Q}));
  809. auto transform = Execute({highpass_biquad});
  810. Status rc = transform({input}, &output);
  811. ASSERT_TRUE(rc.IsOk());
  812. }
  813. TEST_F(MindDataTestExecute, TestHighpassBiquadParamCheckQ) {
  814. MS_LOG(INFO) << "Doing MindDataTestExecute-TestHighpassBiquadParamCheckQ.";
  815. std::vector<mindspore::MSTensor> output;
  816. std::shared_ptr<Tensor> test;
  817. std::vector<float> test_vector = {0.6013, 0.8081, 0.6600, 0.4278, 0.4049, 0.0541, 0.8800, 0.7143, 0.0926, 0.3502,
  818. 0.6148, 0.8738, 0.1869, 0.9023, 0.4293, 0.2175, 0.5132, 0.2622, 0.6490, 0.0741,
  819. 0.7903, 0.3428, 0.1598, 0.4841, 0.8128, 0.7409, 0.7226, 0.4951, 0.5589, 0.9210};
  820. Tensor::CreateFromVector(test_vector, TensorShape({5, 3, 2}), &test);
  821. auto input = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(test));
  822. // Check Q
  823. std::shared_ptr<TensorTransform> highpass_biquad_op = std::make_shared<audio::HighpassBiquad>(44100, 3000.5, 0);
  824. mindspore::dataset::Execute transform({highpass_biquad_op});
  825. Status rc = transform({input}, &output);
  826. ASSERT_FALSE(rc.IsOk());
  827. }
  828. TEST_F(MindDataTestExecute, TestHighpassBiquadParamCheckSampleRate) {
  829. MS_LOG(INFO) << "Doing MindDataTestExecute-TestHighpassBiquadParamCheckSampleRate.";
  830. std::vector<mindspore::MSTensor> output;
  831. std::shared_ptr<Tensor> test;
  832. std::vector<double> test_vector = {0.0237, 0.6026, 0.3801, 0.1978, 0.8672, 0.0095, 0.5166, 0.2641, 0.5485, 0.5144};
  833. Tensor::CreateFromVector(test_vector, TensorShape({1, 10}), &test);
  834. auto input = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(test));
  835. // Check sample_rate
  836. std::shared_ptr<TensorTransform> highpass_biquad_op = std::make_shared<audio::HighpassBiquad>(0, 3000.5, 0.7);
  837. mindspore::dataset::Execute transform({highpass_biquad_op});
  838. Status rc = transform({input}, &output);
  839. ASSERT_FALSE(rc.IsOk());
  840. }
  841. TEST_F(MindDataTestExecute, TestMuLawDecodingEager) {
  842. MS_LOG(INFO) << "Doing MindDataTestExecute-TestMuLawDecodingEager.";
  843. // testing
  844. std::shared_ptr<Tensor> input_tensor;
  845. Tensor::CreateFromVector(std::vector<float>({1, 254, 231, 155, 101, 77}), TensorShape({1, 6}), &input_tensor);
  846. auto input_01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input_tensor));
  847. std::shared_ptr<TensorTransform> mu_law_encoding_01 = std::make_shared<audio::MuLawDecoding>(255);
  848. // Filtered waveform by mulawencoding
  849. mindspore::dataset::Execute Transform01({mu_law_encoding_01});
  850. Status s01 = Transform01(input_01, &input_01);
  851. EXPECT_TRUE(s01.IsOk());
  852. }
  853. /// Feature: MuLawEncoding
  854. /// Description: test MuLawEncoding in eager mode
  855. /// Expectation: the data is processed successfully
  856. TEST_F(MindDataTestExecute, TestMuLawEncodingEager) {
  857. MS_LOG(INFO) << "Doing MindDataTestExecute-TestMuLawEncodingEager.";
  858. // testing
  859. std::shared_ptr<Tensor> input_tensor;
  860. Tensor::CreateFromVector(std::vector<float>({0.1, 0.2, 0.3, 0.4, 0.5, 0.6}), TensorShape({1, 6}), &input_tensor);
  861. auto input_01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input_tensor));
  862. std::shared_ptr<TensorTransform> mu_law_encoding_01 = std::make_shared<audio::MuLawEncoding>(255);
  863. // Filtered waveform by mulawencoding
  864. mindspore::dataset::Execute Transform01({mu_law_encoding_01});
  865. Status s01 = Transform01(input_01, &input_01);
  866. EXPECT_TRUE(s01.IsOk());
  867. }
  868. /// Feature: Overdrive
  869. /// Description: test basic usage of Overdrive
  870. /// Expectation: get correct number of data
  871. TEST_F(MindDataTestExecute, TestOverdriveBasicWithEager) {
  872. MS_LOG(INFO) << "Doing MindDataTestExecute-TestOverdriveBasicWithEager.";
  873. // Original waveform
  874. std::vector<float> labels = {
  875. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  876. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  877. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  878. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  879. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  880. std::shared_ptr<Tensor> input;
  881. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  882. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  883. std::shared_ptr<TensorTransform> phaser_op_01 = std::make_shared<audio::Overdrive>(5.0, 3.0);
  884. mindspore::dataset::Execute Transform01({phaser_op_01});
  885. Status s01 = Transform01(input_02, &input_02);
  886. EXPECT_TRUE(s01.IsOk());
  887. }
  888. /// Feature: Overdrive
  889. /// Description: test invalid parameter of Overdrive
  890. /// Expectation: throw exception correctly
  891. TEST_F(MindDataTestExecute, TestOverdriveWrongArgWithEager) {
  892. MS_LOG(INFO) << "Doing MindDataTestExecute-TestOverdriveWrongArgWithEager";
  893. std::vector<double> labels = {0.271, 1.634, 9.246, 0.108, 1.138, 1.156, 3.394,
  894. 1.55, 3.614, 1.8402, 0.718, 4.599, 5.64, 2.510620117187500000e-02,
  895. 1.38, 5.825, 4.1906, 5.28, 1.052, 9.36};
  896. std::shared_ptr<Tensor> input;
  897. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({4, 5}), &input));
  898. // verify the gain range from 0 to 100
  899. auto input_01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  900. std::shared_ptr<TensorTransform> overdrive_op1 = std::make_shared<audio::Overdrive>(100.1);
  901. mindspore::dataset::Execute Transform01({overdrive_op1});
  902. Status s01 = Transform01(input_01, &input_01);
  903. EXPECT_FALSE(s01.IsOk());
  904. // verify the color range from 0 to 100
  905. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  906. std::shared_ptr<TensorTransform> overdrive_op2 = std::make_shared<audio::Overdrive>(5.0, 100.1);
  907. mindspore::dataset::Execute Transform02({overdrive_op2});
  908. Status s02 = Transform02(input_02, &input_02);
  909. EXPECT_FALSE(s02.IsOk());
  910. }
  911. TEST_F(MindDataTestExecute, TestRiaaBiquadWithEager) {
  912. MS_LOG(INFO) << "Doing MindDataTestExecute-TestRiaaBiquadWithEager.";
  913. // Original waveform
  914. std::vector<float> labels = {
  915. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  916. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  917. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  918. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  919. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  920. std::shared_ptr<Tensor> input;
  921. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  922. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  923. std::shared_ptr<TensorTransform> riaa_biquad_01 = std::make_shared<audio::RiaaBiquad>(44100);
  924. mindspore::dataset::Execute Transform01({riaa_biquad_01});
  925. // Filtered waveform by riaabiquad
  926. Status s01 = Transform01(input_02, &input_02);
  927. EXPECT_TRUE(s01.IsOk());
  928. }
  929. TEST_F(MindDataTestExecute, TestRiaaBiquadWithWrongArg) {
  930. MS_LOG(INFO) << "Doing MindDataTestExecute-TestRiaaBiquadWithWrongArg.";
  931. std::vector<float> labels = {3.156, 5.690, 1.362, 1.093, 5.782, 6.381, 5.982, 3.098, 1.222, 6.027,
  932. 3.909, 7.993, 4.324, 1.092, 5.093, 0.991, 1.099, 4.092, 8.111, 6.666};
  933. std::shared_ptr<Tensor> input;
  934. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({4, 5}), &input));
  935. auto input01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  936. // Check sample_rate
  937. MS_LOG(INFO) << "sample_rate is zero.";
  938. std::shared_ptr<TensorTransform> riaa_biquad_op01 = std::make_shared<audio::RiaaBiquad>(0);
  939. mindspore::dataset::Execute Transform01({riaa_biquad_op01});
  940. Status s01 = Transform01(input01, &input01);
  941. EXPECT_FALSE(s01.IsOk());
  942. }
  943. TEST_F(MindDataTestExecute, TestTrebleBiquadWithEager) {
  944. MS_LOG(INFO) << "Doing MindDataTestExecute-TestTrebleBiquadWithEager.";
  945. // Original waveform
  946. std::vector<float> labels = {3.156, 5.690, 1.362, 1.093, 5.782, 6.381, 5.982, 3.098, 1.222, 6.027,
  947. 3.909, 7.993, 4.324, 1.092, 5.093, 0.991, 1.099, 4.092, 8.111, 6.666};
  948. std::shared_ptr<Tensor> input;
  949. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  950. auto input_01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  951. std::shared_ptr<TensorTransform> treble_biquad_01 = std::make_shared<audio::TrebleBiquad>(44100, 200);
  952. mindspore::dataset::Execute Transform01({treble_biquad_01});
  953. // Filtered waveform by treblebiquad
  954. EXPECT_OK(Transform01(input_01, &input_01));
  955. }
  956. TEST_F(MindDataTestExecute, TestTrebleBiquadWithWrongArg) {
  957. MS_LOG(INFO) << "Doing MindDataTestExecute-TestTrebleBiquadWithWrongArg.";
  958. std::vector<double> labels = {
  959. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  960. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  961. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  962. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  963. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  964. std::shared_ptr<Tensor> input;
  965. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  966. auto input01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  967. auto input02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  968. // Check sample_rate
  969. MS_LOG(INFO) << "sample_rate is zero.";
  970. std::shared_ptr<TensorTransform> treble_biquad_op01 = std::make_shared<audio::TrebleBiquad>(0.0, 200.0);
  971. mindspore::dataset::Execute Transform01({treble_biquad_op01});
  972. EXPECT_ERROR(Transform01(input01, &input01));
  973. // Check Q
  974. MS_LOG(INFO) << "Q is zero.";
  975. std::shared_ptr<TensorTransform> treble_biquad_op02 =
  976. std::make_shared<audio::TrebleBiquad>(44100, 200.0, 3000.0, 0.0);
  977. mindspore::dataset::Execute Transform02({treble_biquad_op02});
  978. EXPECT_ERROR(Transform02(input02, &input02));
  979. }
  980. TEST_F(MindDataTestExecute, TestLFilterWithEager) {
  981. MS_LOG(INFO) << "Doing MindDataTestExecute-TestLFilterWithEager.";
  982. // Original waveform
  983. std::vector<float> labels = {
  984. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  985. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  986. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  987. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  988. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  989. std::shared_ptr<Tensor> input;
  990. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  991. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  992. std::vector<float> a_coeffs = {0.1, 0.2, 0.3};
  993. std::vector<float> b_coeffs = {0.1, 0.2, 0.3};
  994. std::shared_ptr<TensorTransform> lfilter_01 = std::make_shared<audio::LFilter>(a_coeffs, b_coeffs);
  995. mindspore::dataset::Execute Transform01({lfilter_01});
  996. // Filtered waveform by lfilter
  997. Status s01 = Transform01(input_02, &input_02);
  998. EXPECT_TRUE(s01.IsOk());
  999. }
  1000. TEST_F(MindDataTestExecute, TestLFilterWithWrongArg) {
  1001. MS_LOG(INFO) << "Doing MindDataTestExecute-TestLFilterWithWrongArg.";
  1002. std::vector<double> labels = {0.1, 0.2, 0.3, 0.4, 0.5, 0.6};
  1003. std::shared_ptr<Tensor> input;
  1004. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({1, 6}), &input));
  1005. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1006. // Check a_coeffs size equal to b_coeffs
  1007. MS_LOG(INFO) << "a_coeffs size not equal to b_coeffs";
  1008. std::vector<float> a_coeffs = {0.1, 0.2, 0.3};
  1009. std::vector<float> b_coeffs = {0.1, 0.2};
  1010. std::shared_ptr<TensorTransform> lfilter_op = std::make_shared<audio::LFilter>(a_coeffs, b_coeffs);
  1011. mindspore::dataset::Execute Transform01({lfilter_op});
  1012. Status s01 = Transform01(input_02, &input_02);
  1013. EXPECT_FALSE(s01.IsOk());
  1014. }
  1015. /// Feature: Phaser
  1016. /// Description: test basic usage of Phaser
  1017. /// Expectation: get correct number of data
  1018. TEST_F(MindDataTestExecute, TestPhaserBasicWithEager) {
  1019. MS_LOG(INFO) << "Doing MindDataTestExecute-TestPhaserBasicWithEager.";
  1020. // Original waveform
  1021. std::vector<float> labels = {
  1022. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  1023. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  1024. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  1025. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  1026. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  1027. std::shared_ptr<Tensor> input;
  1028. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  1029. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1030. std::shared_ptr<TensorTransform> phaser_op_01 = std::make_shared<audio::Phaser>(44100);
  1031. mindspore::dataset::Execute Transform01({phaser_op_01});
  1032. Status s01 = Transform01(input_02, &input_02);
  1033. EXPECT_TRUE(s01.IsOk());
  1034. }
  1035. /// Feature: Phaser
  1036. /// Description: test invalid parameter of Phaser
  1037. /// Expectation: throw exception correctly
  1038. TEST_F(MindDataTestExecute, TestPhaserInputArgWithEager) {
  1039. MS_LOG(INFO) << "Doing MindDataTestExecute-TestPhaserInputArgWithEager";
  1040. std::vector<double> labels = {
  1041. 0.271, 1.634, 9.246, 0.108,
  1042. 1.138, 1.156, 3.394, 1.55,
  1043. 3.614, 1.8402, 0.718, 4.599,
  1044. 5.64, 2.510620117187500000e-02, 1.38, 5.825,
  1045. 4.1906, 5.28, 1.052, 9.36};
  1046. std::shared_ptr<Tensor> input;
  1047. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({4, 5}), &input));
  1048. // check gain_in rang [0.0,1.0]
  1049. auto input_01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1050. std::shared_ptr<TensorTransform> phaser_op1 = std::make_shared<audio::Phaser>(44100, 2.0);
  1051. mindspore::dataset::Execute Transform01({phaser_op1});
  1052. Status s01 = Transform01(input_01, &input_01);
  1053. EXPECT_FALSE(s01.IsOk());
  1054. // check gain_out range [0.0,1e9]
  1055. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1056. std::shared_ptr<TensorTransform> phaser_op2 = std::make_shared<audio::Phaser>(44100, 0.2, -0.1);
  1057. mindspore::dataset::Execute Transform02({phaser_op2});
  1058. Status s02 = Transform02(input_02, &input_02);
  1059. EXPECT_FALSE(s02.IsOk());
  1060. // check delay_ms range [0.0,5.0]
  1061. auto input_03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1062. std::shared_ptr<TensorTransform> phaser_op3 = std::make_shared<audio::Phaser>(44100, 0.2, 0.2, 6.0);
  1063. mindspore::dataset::Execute Transform03({phaser_op3});
  1064. Status s03 = Transform03(input_03, &input_03);
  1065. EXPECT_FALSE(s03.IsOk());
  1066. // check decay range [0.0,0.99]
  1067. auto input_04 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1068. std::shared_ptr<TensorTransform> phaser_op4 = std::make_shared<audio::Phaser>(44100, 0.2, 0.2, 4.0, 1.0);
  1069. mindspore::dataset::Execute Transform04({phaser_op4});
  1070. Status s04 = Transform04(input_04, &input_04);
  1071. EXPECT_FALSE(s04.IsOk());
  1072. // check mod_speed range [0.1, 2]
  1073. auto input_05 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1074. std::shared_ptr<TensorTransform> phaser_op5 = std::make_shared<audio::Phaser>(44100, 0.2, 0.2, 4.0, 0.8, 3.0);
  1075. mindspore::dataset::Execute Transform05({phaser_op5});
  1076. Status s05 = Transform05(input_05, &input_05);
  1077. EXPECT_FALSE(s05.IsOk());
  1078. }
  1079. TEST_F(MindDataTestExecute, TestDCShiftEager) {
  1080. MS_LOG(INFO) << "Doing MindDataTestExecute-TestDCShiftEager.";
  1081. std::vector<float> origin = {0.67443, 1.87523, 0.73465, -0.74553, -1.54346, 1.54093, -1.23453};
  1082. std::shared_ptr<Tensor> de_tensor;
  1083. Tensor::CreateFromVector(origin, &de_tensor);
  1084. std::shared_ptr<TensorTransform> dc_shift = std::make_shared<audio::DCShift>(0.5, 0.02);
  1085. auto input = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  1086. mindspore::dataset::Execute Transform({dc_shift});
  1087. Status s = Transform(input, &input);
  1088. ASSERT_TRUE(s.IsOk());
  1089. }
  1090. TEST_F(MindDataTestExecute, TestBiquadWithEager) {
  1091. MS_LOG(INFO) << "Doing MindDataTestExecute-TestBiquadWithEager.";
  1092. // Original waveform
  1093. std::vector<float> labels = {3.716064453125, 12.34765625, 5.246826171875, 1.0894775390625,
  1094. 1.1383056640625, 2.1566162109375, 1.3946533203125, 3.55029296875};
  1095. std::shared_ptr<Tensor> input;
  1096. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 4}), &input));
  1097. auto input_01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1098. std::shared_ptr<TensorTransform> biquad_01 = std::make_shared<audio::Biquad>(1, 0.02, 0.13, 1, 0.12, 0.3);
  1099. mindspore::dataset::Execute Transform01({biquad_01});
  1100. // Filtered waveform by biquad
  1101. Status s01 = Transform01(input_01, &input_01);
  1102. EXPECT_TRUE(s01.IsOk());
  1103. }
  1104. TEST_F(MindDataTestExecute, TestBiquadWithWrongArg) {
  1105. MS_LOG(INFO) << "Doing MindDataTestExecute-TestBiquadWithWrongArg.";
  1106. std::vector<double> labels = {
  1107. 2.716064453125000000e-03,
  1108. 6.347656250000000000e-03,
  1109. 9.246826171875000000e-03,
  1110. 1.089477539062500000e-02,
  1111. };
  1112. std::shared_ptr<Tensor> input;
  1113. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({1, 4}), &input));
  1114. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1115. // Check a0
  1116. MS_LOG(INFO) << "a0 is zero.";
  1117. std::shared_ptr<TensorTransform> biquad_op = std::make_shared<audio::Biquad>(1, 0.02, 0.13, 0, 0.12, 0.3);
  1118. mindspore::dataset::Execute Transform01({biquad_op});
  1119. Status s01 = Transform01(input_02, &input_02);
  1120. EXPECT_FALSE(s01.IsOk());
  1121. }
  1122. TEST_F(MindDataTestExecute, TestFade) {
  1123. MS_LOG(INFO) << "Doing MindDataTestExecute-TestFade.";
  1124. std::vector<float> waveform = {
  1125. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  1126. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  1127. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  1128. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  1129. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  1130. std::shared_ptr<Tensor> input;
  1131. ASSERT_OK(Tensor::CreateFromVector(waveform, TensorShape({1, 20}), &input));
  1132. auto input_01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1133. std::shared_ptr<TensorTransform> fade01 = std::make_shared<audio::Fade>(5, 6, FadeShape::kLinear);
  1134. mindspore::dataset::Execute Transform01({fade01});
  1135. Status s01 = Transform01(input_01, &input_01);
  1136. EXPECT_TRUE(s01.IsOk());
  1137. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1138. std::shared_ptr<TensorTransform> fade02 = std::make_shared<audio::Fade>(5, 6, FadeShape::kQuarterSine);
  1139. mindspore::dataset::Execute Transform02({fade02});
  1140. Status s02 = Transform02(input_02, &input_02);
  1141. EXPECT_TRUE(s02.IsOk());
  1142. auto input_03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1143. std::shared_ptr<TensorTransform> fade03 = std::make_shared<audio::Fade>(5, 6, FadeShape::kExponential);
  1144. mindspore::dataset::Execute Transform03({fade03});
  1145. Status s03 = Transform03(input_03, &input_03);
  1146. EXPECT_TRUE(s03.IsOk());
  1147. auto input_04 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1148. std::shared_ptr<TensorTransform> fade04 = std::make_shared<audio::Fade>(5, 6, FadeShape::kHalfSine);
  1149. mindspore::dataset::Execute Transform04({fade04});
  1150. Status s04 = Transform01(input_04, &input_04);
  1151. EXPECT_TRUE(s04.IsOk());
  1152. auto input_05 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1153. std::shared_ptr<TensorTransform> fade05 = std::make_shared<audio::Fade>(5, 6, FadeShape::kLogarithmic);
  1154. mindspore::dataset::Execute Transform05({fade05});
  1155. Status s05 = Transform01(input_05, &input_05);
  1156. EXPECT_TRUE(s05.IsOk());
  1157. }
  1158. TEST_F(MindDataTestExecute, TestFadeDefaultArg) {
  1159. MS_LOG(INFO) << "Doing MindDataTestExecute-TestFadeDefaultArg.";
  1160. std::vector<double> waveform = {
  1161. 1.573897564868000000e-03, 5.462374385400000000e-03, 3.584989689205400000e-03, 2.035667767462500000e-02,
  1162. 2.353543454062500000e-02, 1.256616210937500000e-02, 2.394653320312500000e-02, 5.243553968750000000e-02,
  1163. 2.434554533002500000e-02, 3.454566960937500000e-02, 2.343545454437500000e-02, 2.534343093750000000e-02,
  1164. 2.354465654550000000e-02, 1.453545517187500000e-02, 1.454645535875000000e-02, 1.433243195312500000e-02,
  1165. 1.434354554812500000e-02, 3.343435276865400000e-02, 1.234257687312500000e-02, 5.368896484375000000e-03};
  1166. std::shared_ptr<Tensor> input;
  1167. ASSERT_OK(Tensor::CreateFromVector(waveform, TensorShape({2, 10}), &input));
  1168. auto input_01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1169. std::shared_ptr<TensorTransform> fade01 = std::make_shared<audio::Fade>();
  1170. mindspore::dataset::Execute Transform01({fade01});
  1171. Status s01 = Transform01(input_01, &input_01);
  1172. EXPECT_TRUE(s01.IsOk());
  1173. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1174. std::shared_ptr<TensorTransform> fade02 = std::make_shared<audio::Fade>(5);
  1175. mindspore::dataset::Execute Transform02({fade02});
  1176. Status s02 = Transform02(input_02, &input_02);
  1177. EXPECT_TRUE(s02.IsOk());
  1178. auto input_03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1179. std::shared_ptr<TensorTransform> fade03 = std::make_shared<audio::Fade>(5, 6);
  1180. mindspore::dataset::Execute Transform03({fade03});
  1181. Status s03 = Transform03(input_03, &input_03);
  1182. EXPECT_TRUE(s03.IsOk());
  1183. }
  1184. TEST_F(MindDataTestExecute, TestFadeWithInvalidArg) {
  1185. MS_LOG(INFO) << "Doing MindDataTestExecute-TestFadeWithInvalidArg.";
  1186. std::vector<float> waveform = {
  1187. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  1188. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  1189. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  1190. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  1191. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  1192. std::shared_ptr<Tensor> input;
  1193. ASSERT_OK(Tensor::CreateFromVector(waveform, TensorShape({1, 20}), &input));
  1194. auto input_01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1195. std::shared_ptr<TensorTransform> fade1 = std::make_shared<audio::Fade>(-5, 6);
  1196. mindspore::dataset::Execute Transform01({fade1});
  1197. Status s01 = Transform01(input_01, &input_01);
  1198. EXPECT_FALSE(s01.IsOk());
  1199. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1200. std::shared_ptr<TensorTransform> fade2 = std::make_shared<audio::Fade>(0, -1);
  1201. mindspore::dataset::Execute Transform02({fade2});
  1202. Status s02 = Transform02(input_02, &input_02);
  1203. EXPECT_FALSE(s02.IsOk());
  1204. auto input_03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1205. std::shared_ptr<TensorTransform> fade3 = std::make_shared<audio::Fade>(30, 10);
  1206. mindspore::dataset::Execute Transform03({fade3});
  1207. Status s03 = Transform03(input_03, &input_03);
  1208. EXPECT_FALSE(s03.IsOk());
  1209. auto input_04 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1210. std::shared_ptr<TensorTransform> fade4 = std::make_shared<audio::Fade>(10, 30);
  1211. mindspore::dataset::Execute Transform04({fade4});
  1212. Status s04 = Transform04(input_04, &input_04);
  1213. EXPECT_FALSE(s04.IsOk());
  1214. }
  1215. TEST_F(MindDataTestExecute, TestVolDefalutValue) {
  1216. MS_LOG(INFO) << "Doing MindDataTestExecute-TestVolDefalutValue.";
  1217. std::shared_ptr<Tensor> input_tensor_;
  1218. TensorShape s = TensorShape({2, 6});
  1219. ASSERT_OK(Tensor::CreateFromVector(
  1220. std::vector<float>({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f}), s, &input_tensor_));
  1221. auto input_tensor = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input_tensor_));
  1222. std::shared_ptr<TensorTransform> vol_op = std::make_shared<audio::Vol>(0.333);
  1223. mindspore::dataset::Execute transform({vol_op});
  1224. Status status = transform(input_tensor, &input_tensor);
  1225. EXPECT_TRUE(status.IsOk());
  1226. }
  1227. TEST_F(MindDataTestExecute, TestVolGainTypePower) {
  1228. MS_LOG(INFO) << "Doing MindDataTestExecute-TestVolGainTypePower.";
  1229. std::shared_ptr<Tensor> input_tensor_;
  1230. TensorShape s = TensorShape({4, 3});
  1231. ASSERT_OK(Tensor::CreateFromVector(
  1232. std::vector<double>({4.0f, 5.0f, 3.0f, 5.0f, 4.0f, 6.0f, 6.0f, 1.0f, 2.0f, 3.0f, 2.0f, 1.0f}), s, &input_tensor_));
  1233. auto input_tensor = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input_tensor_));
  1234. std::shared_ptr<TensorTransform> vol_op = std::make_shared<audio::Vol>(0.2, GainType::kPower);
  1235. mindspore::dataset::Execute transform({vol_op});
  1236. Status status = transform(input_tensor, &input_tensor);
  1237. EXPECT_TRUE(status.IsOk());
  1238. }
  1239. TEST_F(MindDataTestExecute, TestMagphaseEager) {
  1240. MS_LOG(INFO) << "Doing MindDataTestExecute-TestMagphaseEager.";
  1241. float power = 1.0;
  1242. std::vector<mindspore::MSTensor> output_tensor;
  1243. std::shared_ptr<Tensor> test;
  1244. std::vector<float> test_vector = {3, 4, -3, 4, 3, -4, -3, -4, 5, 12, -5, 12, 5, -12, -5, -12};
  1245. Tensor::CreateFromVector(test_vector, TensorShape({2, 4, 2}), &test);
  1246. auto input_tensor = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(test));
  1247. std::shared_ptr<TensorTransform> magphase(new audio::Magphase({power}));
  1248. auto transform = Execute({magphase});
  1249. Status rc = transform({input_tensor}, &output_tensor);
  1250. ASSERT_TRUE(rc.IsOk());
  1251. }
  1252. TEST_F(MindDataTestExecute, TestRandomInvertEager) {
  1253. MS_LOG(INFO) << "Doing MindDataTestExecute-TestRandomInvertEager.";
  1254. // Read images
  1255. auto image = ReadFileToTensor("data/dataset/apple.jpg");
  1256. // Transform params
  1257. auto decode = vision::Decode();
  1258. auto random_invert_op = vision::RandomInvert(0.6);
  1259. auto transform = Execute({decode, random_invert_op});
  1260. Status rc = transform(image, &image);
  1261. EXPECT_EQ(rc, Status::OK());
  1262. }
  1263. TEST_F(MindDataTestExecute, TestRandomAutoContrastEager) {
  1264. MS_LOG(INFO) << "Doing MindDataTestExecute-TestRandomAutoContrastEager.";
  1265. // Read images
  1266. auto image = ReadFileToTensor("data/dataset/apple.jpg");
  1267. // Transform params
  1268. auto decode = vision::Decode();
  1269. auto random_auto_contrast_op = vision::RandomAutoContrast(0.6);
  1270. auto transform = Execute({decode, random_auto_contrast_op});
  1271. Status rc = transform(image, &image);
  1272. EXPECT_EQ(rc, Status::OK());
  1273. }
  1274. TEST_F(MindDataTestExecute, TestRandomEqualizeEager) {
  1275. MS_LOG(INFO) << "Doing MindDataTestExecute-TestRandomEqualizeEager.";
  1276. // Read images
  1277. auto image = ReadFileToTensor("data/dataset/apple.jpg");
  1278. // Transform params
  1279. auto decode = vision::Decode();
  1280. auto random_equalize_op = vision::RandomEqualize(0.6);
  1281. auto transform = Execute({decode, random_equalize_op});
  1282. Status rc = transform(image, &image);
  1283. EXPECT_EQ(rc, Status::OK());
  1284. }
  1285. TEST_F(MindDataTestExecute, TestRandomAdjustSharpnessEager) {
  1286. MS_LOG(INFO) << "Doing MindDataTestExecute-TestRandomAdjustSharpnessEager.";
  1287. // Read images
  1288. auto image = ReadFileToTensor("data/dataset/apple.jpg");
  1289. // Transform params
  1290. auto decode = vision::Decode();
  1291. auto random_adjust_sharpness_op = vision::RandomAdjustSharpness(2.0, 0.6);
  1292. auto transform = Execute({decode, random_adjust_sharpness_op});
  1293. Status rc = transform(image, &image);
  1294. EXPECT_EQ(rc, Status::OK());
  1295. }
  1296. TEST_F(MindDataTestExecute, TestDetectPitchFrequencyWithEager) {
  1297. MS_LOG(INFO) << "Doing MindDataTestExecute-TestDetectPitchFrequencyWithEager.";
  1298. // Original waveform
  1299. std::vector<double> labels = {
  1300. 3.716064453125000000e-03, 2.347656250000000000e-03, 9.246826171875000000e-03, 4.089477539062500000e-02,
  1301. 3.138305664062500000e-02, 1.156616210937500000e-02, 0.394653320312500000e-02, 1.550292968750000000e-02,
  1302. 1.614379882812500000e-02, 0.840209960937500000e-02, 1.718139648437500000e-02, 2.599121093750000000e-02,
  1303. 5.647949218750000000e-02, 1.510620117187500000e-02, 2.385498046875000000e-02, 1.345825195312500000e-02,
  1304. 1.419067382812500000e-02, 3.284790039062500000e-02, 9.052856445312500000e-02, 2.368896484375000000e-03};
  1305. std::shared_ptr<Tensor> input;
  1306. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  1307. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1308. std::shared_ptr<TensorTransform> detect_pitch_frequency_01 =
  1309. std::make_shared<audio::DetectPitchFrequency>(30, 0.1, 3, 5, 25);
  1310. mindspore::dataset::Execute Transform01({detect_pitch_frequency_01});
  1311. // Detect pitch frequence
  1312. Status s01 = Transform01(input_02, &input_02);
  1313. EXPECT_TRUE(s01.IsOk());
  1314. }
  1315. TEST_F(MindDataTestExecute, TestDetectPitchFrequencyWithWrongArg) {
  1316. MS_LOG(INFO) << "Doing MindDataTestExecute-TestDetectPitchFrequencyWithWrongArg.";
  1317. std::vector<float> labels = {
  1318. 0.716064e-03, 5.347656e-03, 6.246826e-03, 2.089477e-02, 7.138305e-02,
  1319. 4.156616e-02, 1.394653e-02, 3.550292e-02, 0.614379e-02, 3.840209e-02,
  1320. };
  1321. std::shared_ptr<Tensor> input;
  1322. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 5}), &input));
  1323. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1324. // Check frame_time
  1325. MS_LOG(INFO) << "frame_time is zero.";
  1326. std::shared_ptr<TensorTransform> detect_pitch_frequency_01 =
  1327. std::make_shared<audio::DetectPitchFrequency>(40, 0, 3, 3, 20);
  1328. mindspore::dataset::Execute Transform01({detect_pitch_frequency_01});
  1329. Status s01 = Transform01(input_02, &input_02);
  1330. EXPECT_FALSE(s01.IsOk());
  1331. // Check win_length
  1332. MS_LOG(INFO) << "win_length is zero.";
  1333. std::shared_ptr<TensorTransform> detect_pitch_frequency_02 =
  1334. std::make_shared<audio::DetectPitchFrequency>(40, 0.1, 0, 3, 20);
  1335. mindspore::dataset::Execute Transform02({detect_pitch_frequency_02});
  1336. Status s02 = Transform02(input_02, &input_02);
  1337. EXPECT_FALSE(s02.IsOk());
  1338. // Check freq_low
  1339. MS_LOG(INFO) << "freq_low is zero.";
  1340. std::shared_ptr<TensorTransform> detect_pitch_frequency_03 =
  1341. std::make_shared<audio::DetectPitchFrequency>(40, 0.1, 3, 0, 20);
  1342. mindspore::dataset::Execute Transform03({detect_pitch_frequency_03});
  1343. Status s03 = Transform03(input_02, &input_02);
  1344. EXPECT_FALSE(s03.IsOk());
  1345. // Check freq_high
  1346. MS_LOG(INFO) << "freq_high is zero.";
  1347. std::shared_ptr<TensorTransform> detect_pitch_frequency_04 =
  1348. std::make_shared<audio::DetectPitchFrequency>(40, 0.1, 3, 3, 0);
  1349. mindspore::dataset::Execute Transform04({detect_pitch_frequency_04});
  1350. Status s04 = Transform04(input_02, &input_02);
  1351. EXPECT_FALSE(s04.IsOk());
  1352. // Check sample_rate
  1353. MS_LOG(INFO) << "sample_rate is zero.";
  1354. std::shared_ptr<TensorTransform> detect_pitch_frequency_05 = std::make_shared<audio::DetectPitchFrequency>(0);
  1355. mindspore::dataset::Execute Transform05({detect_pitch_frequency_05});
  1356. Status s05 = Transform05(input_02, &input_02);
  1357. EXPECT_FALSE(s05.IsOk());
  1358. }
  1359. /// Feature: Dither
  1360. /// Description: test Dither in eager mode
  1361. /// Expectation: the data is processed successfully
  1362. TEST_F(MindDataTestExecute, TestDitherWithEager) {
  1363. MS_LOG(INFO) << "Doing MindDataTestExecute-TestDitherWithEager.";
  1364. // Original waveform
  1365. std::vector<float> labels = {
  1366. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  1367. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  1368. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  1369. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  1370. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  1371. std::shared_ptr<Tensor> input;
  1372. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  1373. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1374. std::shared_ptr<TensorTransform> dither_01 = std::make_shared<audio::Dither>();
  1375. mindspore::dataset::Execute Transform01({dither_01});
  1376. // Filtered waveform by Dither
  1377. Status s01 = Transform01(input_02, &input_02);
  1378. EXPECT_TRUE(s01.IsOk());
  1379. }
  1380. TEST_F(MindDataTestExecute, TestFlangerWithEager) {
  1381. MS_LOG(INFO) << "Doing MindDataTestExecute-TestFlangerWithEager.";
  1382. // Original waveform
  1383. std::vector<float> labels = {
  1384. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  1385. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  1386. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  1387. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  1388. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  1389. std::shared_ptr<Tensor> input;
  1390. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  1391. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1392. std::shared_ptr<TensorTransform> flanger_01 = std::make_shared<audio::Flanger>(44100);
  1393. mindspore::dataset::Execute Transform01({flanger_01});
  1394. // Filtered waveform by flanger
  1395. Status s01 = Transform01(input_02, &input_02);
  1396. EXPECT_TRUE(s01.IsOk());
  1397. }
  1398. TEST_F(MindDataTestExecute, TestFlangerWithWrongArg) {
  1399. MS_LOG(INFO) << "Doing MindDataTestExecute-TestFlangerWithWrongArg.";
  1400. std::vector<double> labels = {1.143, 1.3123, 2.632, 2.554, 1.213, 1.3, 0.456, 3.563};
  1401. std::shared_ptr<Tensor> input;
  1402. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({4, 2}), &input));
  1403. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1404. // Check sample_rate
  1405. MS_LOG(INFO) << "sample_rate is zero.";
  1406. std::shared_ptr<TensorTransform> flanger_op = std::make_shared<audio::Flanger>(0);
  1407. mindspore::dataset::Execute Transform01({flanger_op});
  1408. Status s01 = Transform01(input_02, &input_02);
  1409. EXPECT_FALSE(s01.IsOk());
  1410. }
  1411. /// Feature: Vectors
  1412. /// Description: test basic usage of Vectors and the ToVectors with default parameter
  1413. /// Expectation: get correct MSTensor
  1414. TEST_F(MindDataTestExecute, TestVectorsParam) {
  1415. MS_LOG(INFO) << "Doing MindDataTestExecute-TestVectorsParam.";
  1416. std::shared_ptr<Tensor> de_tensor;
  1417. Tensor::CreateScalar<std::string>("ok", &de_tensor);
  1418. auto token = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  1419. mindspore::MSTensor lookup_result;
  1420. // Create expected output.
  1421. std::shared_ptr<Tensor> de_expected;
  1422. std::vector<float> expected = {0.418, 0.24968, -0.41242, 0.1217, 0.34527, -0.04445718411};
  1423. dsize_t dim = 6;
  1424. ASSERT_OK(Tensor::CreateFromVector(expected, TensorShape({dim}), &de_expected));
  1425. auto ms_expected = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected));
  1426. // Transform params.
  1427. std::string vectors_dir = "data/dataset/testVectors/vectors.txt";
  1428. std::shared_ptr<Vectors> vectors01;
  1429. Status s01 = Vectors::BuildFromFile(&vectors01, vectors_dir);
  1430. EXPECT_EQ(s01, Status::OK());
  1431. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(vectors01);
  1432. auto transform01 = Execute({to_vectors01});
  1433. Status status01 = transform01(token, &lookup_result);
  1434. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected);
  1435. EXPECT_TRUE(status01.IsOk());
  1436. std::shared_ptr<Vectors> vectors02;
  1437. Status s02 = Vectors::BuildFromFile(&vectors02, vectors_dir, 100);
  1438. EXPECT_EQ(s02, Status::OK());
  1439. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(vectors02);
  1440. auto transform02 = Execute({to_vectors02});
  1441. Status status02 = transform02(token, &lookup_result);
  1442. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected);
  1443. EXPECT_TRUE(status02.IsOk());
  1444. std::shared_ptr<Vectors> vectors03;
  1445. Status s03 = Vectors::BuildFromFile(&vectors03, vectors_dir, 3);
  1446. EXPECT_EQ(s03, Status::OK());
  1447. std::shared_ptr<TensorTransform> to_vectors03 = std::make_shared<text::ToVectors>(vectors03);
  1448. auto transform03 = Execute({to_vectors03});
  1449. Status status03 = transform03(token, &lookup_result);
  1450. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected);
  1451. EXPECT_TRUE(status03.IsOk());
  1452. }
  1453. /// Feature: ToVectors
  1454. /// Description: test basic usage of ToVectors and the Vectors with default parameter
  1455. /// Expectation: get correct MSTensor
  1456. TEST_F(MindDataTestExecute, TestToVectorsParam) {
  1457. MS_LOG(INFO) << "Doing MindDataTestExecute-TestToVectorsParam.";
  1458. std::shared_ptr<Tensor> de_tensor01;
  1459. Tensor::CreateScalar<std::string>("none", &de_tensor01);
  1460. auto token01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor01));
  1461. std::shared_ptr<Tensor> de_tensor02;
  1462. Tensor::CreateScalar<std::string>("ok", &de_tensor02);
  1463. auto token02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor02));
  1464. std::shared_ptr<Tensor> de_tensor03;
  1465. Tensor::CreateScalar<std::string>("OK", &de_tensor03);
  1466. auto token03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor03));
  1467. mindspore::MSTensor lookup_result;
  1468. // Create expected output.
  1469. dsize_t dim = 6;
  1470. std::shared_ptr<Tensor> de_expected01;
  1471. std::vector<float> expected01 = {0, 0, 0, 0, 0, 0};
  1472. ASSERT_OK(Tensor::CreateFromVector(expected01, TensorShape({dim}), &de_expected01));
  1473. auto ms_expected01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected01));
  1474. std::shared_ptr<Tensor> de_expected02;
  1475. std::vector<float> expected02 = {-1, -1, -1, -1, -1, -1};
  1476. ASSERT_OK(Tensor::CreateFromVector(expected02, TensorShape({dim}), &de_expected02));
  1477. auto ms_expected02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected02));
  1478. std::shared_ptr<Tensor> de_expected03;
  1479. std::vector<float> expected03 = {0.418, 0.24968, -0.41242, 0.1217, 0.34527, -0.04445718411};
  1480. ASSERT_OK(Tensor::CreateFromVector(expected03, TensorShape({dim}), &de_expected03));
  1481. auto ms_expected03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected03));
  1482. // Transform params.
  1483. std::string vectors_dir = "data/dataset/testVectors/vectors.txt";
  1484. std::shared_ptr<Vectors> vectors;
  1485. Status s = Vectors::BuildFromFile(&vectors, vectors_dir);
  1486. EXPECT_EQ(s, Status::OK());
  1487. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(vectors);
  1488. auto transform01 = Execute({to_vectors01});
  1489. Status status01 = transform01(token01, &lookup_result);
  1490. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected01);
  1491. EXPECT_TRUE(status01.IsOk());
  1492. std::vector<float> unknown_init = {-1, -1, -1, -1, -1, -1};
  1493. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(vectors, unknown_init);
  1494. auto transform02 = Execute({to_vectors02});
  1495. Status status02 = transform02(token01, &lookup_result);
  1496. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected02);
  1497. EXPECT_TRUE(status02.IsOk());
  1498. std::shared_ptr<TensorTransform> to_vectors03 = std::make_shared<text::ToVectors>(vectors, unknown_init);
  1499. auto transform03 = Execute({to_vectors03});
  1500. Status status03 = transform03(token02, &lookup_result);
  1501. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected03);
  1502. EXPECT_TRUE(status03.IsOk());
  1503. std::shared_ptr<TensorTransform> to_vectors04 = std::make_shared<text::ToVectors>(vectors, unknown_init, true);
  1504. auto transform04 = Execute({to_vectors04});
  1505. Status status04 = transform04(token03, &lookup_result);
  1506. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected03);
  1507. EXPECT_TRUE(status04.IsOk());
  1508. }
  1509. /// Feature: ToVectors
  1510. /// Description: test invalid parameter of ToVectors
  1511. /// Expectation: throw exception correctly
  1512. TEST_F(MindDataTestExecute, TestToVectorsWithInvalidParam) {
  1513. MS_LOG(INFO) << "Doing MindDataTestExecute-TestToVectorsWithInvalidParam.";
  1514. std::shared_ptr<Tensor> de_tensor;
  1515. Tensor::CreateScalar<std::string>("none", &de_tensor);
  1516. auto token = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  1517. mindspore::MSTensor lookup_result;
  1518. // Transform params.
  1519. std::string vectors_dir = "data/dataset/testVectors/vectors.txt";
  1520. std::shared_ptr<Vectors> vectors01;
  1521. Status s = Vectors::BuildFromFile(&vectors01, vectors_dir);
  1522. EXPECT_EQ(s, Status::OK());
  1523. std::vector<float> unknown_init = {-1, -1, -1, -1};
  1524. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(vectors01, unknown_init);
  1525. auto transform01 = Execute({to_vectors01});
  1526. Status status01 = transform01(token, &lookup_result);
  1527. EXPECT_FALSE(status01.IsOk());
  1528. std::shared_ptr<Vectors> vectors02 = nullptr;
  1529. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(vectors02);
  1530. auto transform02 = Execute({to_vectors02});
  1531. Status status02 = transform02(token, &lookup_result);
  1532. EXPECT_FALSE(status02.IsOk());
  1533. }
  1534. /// Feature: FastText
  1535. /// Description: test basic usage of FastText and the ToVectors with default parameter
  1536. /// Expectation: get correct MSTensor
  1537. TEST_F(MindDataTestExecute, TestFastTextParam) {
  1538. MS_LOG(INFO) << "Doing MindDataTestExecute-TestFastTextParam.";
  1539. std::shared_ptr<Tensor> de_tensor;
  1540. Tensor::CreateScalar<std::string>("ok", &de_tensor);
  1541. auto token = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  1542. mindspore::MSTensor lookup_result;
  1543. // Create expected output.
  1544. std::shared_ptr<Tensor> de_expected;
  1545. std::vector<float> expected = {0.418, 0.24968, -0.41242, 0.1217, 0.34527, -0.04445718411};
  1546. dsize_t dim = 6;
  1547. ASSERT_OK(Tensor::CreateFromVector(expected, TensorShape({dim}), &de_expected));
  1548. auto ms_expected = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected));
  1549. // Transform params.
  1550. std::string vectors_dir = "data/dataset/test_fast_text/fast_text.vec";
  1551. std::shared_ptr<FastText> fast_text01;
  1552. Status s01 = FastText::BuildFromFile(&fast_text01, vectors_dir);
  1553. EXPECT_EQ(s01, Status::OK());
  1554. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(fast_text01);
  1555. auto transform01 = Execute({to_vectors01});
  1556. Status status01 = transform01(token, &lookup_result);
  1557. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected);
  1558. EXPECT_TRUE(status01.IsOk());
  1559. std::shared_ptr<FastText> fast_text02;
  1560. Status s02 = FastText::BuildFromFile(&fast_text02, vectors_dir, 100);
  1561. EXPECT_EQ(s02, Status::OK());
  1562. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(fast_text02);
  1563. auto transform02 = Execute({to_vectors02});
  1564. Status status02 = transform02(token, &lookup_result);
  1565. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected);
  1566. EXPECT_TRUE(status02.IsOk());
  1567. std::shared_ptr<FastText> fast_text03;
  1568. Status s03 = FastText::BuildFromFile(&fast_text03, vectors_dir, 3);
  1569. EXPECT_EQ(s03, Status::OK());
  1570. std::shared_ptr<TensorTransform> to_vectors03 = std::make_shared<text::ToVectors>(fast_text03);
  1571. auto transform03 = Execute({to_vectors03});
  1572. Status status03 = transform03(token, &lookup_result);
  1573. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected);
  1574. EXPECT_TRUE(status03.IsOk());
  1575. }
  1576. /// Feature: ToVectors
  1577. /// Description: test basic usage of ToVectors and the FastText with default parameter
  1578. /// Expectation: get correct MSTensor
  1579. TEST_F(MindDataTestExecute, TestToVectorsParamForFastText) {
  1580. MS_LOG(INFO) << "Doing MindDataTestExecute-TestToVectorsParamForFastText.";
  1581. std::shared_ptr<Tensor> de_tensor01;
  1582. Tensor::CreateScalar<std::string>("none", &de_tensor01);
  1583. auto token01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor01));
  1584. std::shared_ptr<Tensor> de_tensor02;
  1585. Tensor::CreateScalar<std::string>("ok", &de_tensor02);
  1586. auto token02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor02));
  1587. std::shared_ptr<Tensor> de_tensor03;
  1588. Tensor::CreateScalar<std::string>("OK", &de_tensor03);
  1589. auto token03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor03));
  1590. mindspore::MSTensor lookup_result;
  1591. // Create expected output.
  1592. dsize_t dim = 6;
  1593. std::shared_ptr<Tensor> de_expected01;
  1594. std::vector<float> expected01 = {0, 0, 0, 0, 0, 0};
  1595. ASSERT_OK(Tensor::CreateFromVector(expected01, TensorShape({dim}), &de_expected01));
  1596. auto ms_expected01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected01));
  1597. std::shared_ptr<Tensor> de_expected02;
  1598. std::vector<float> expected02 = {-1, -1, -1, -1, -1, -1};
  1599. ASSERT_OK(Tensor::CreateFromVector(expected02, TensorShape({dim}), &de_expected02));
  1600. auto ms_expected02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected02));
  1601. std::shared_ptr<Tensor> de_expected03;
  1602. std::vector<float> expected03 = {0.418, 0.24968, -0.41242, 0.1217, 0.34527, -0.04445718411};
  1603. ASSERT_OK(Tensor::CreateFromVector(expected03, TensorShape({dim}), &de_expected03));
  1604. auto ms_expected03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected03));
  1605. // Transform params.
  1606. std::string vectors_dir = "data/dataset/test_fast_text/fast_text.vec";
  1607. std::shared_ptr<FastText> fast_text;
  1608. Status s = FastText::BuildFromFile(&fast_text, vectors_dir);
  1609. EXPECT_EQ(s, Status::OK());
  1610. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(fast_text);
  1611. auto transform01 = Execute({to_vectors01});
  1612. Status status01 = transform01(token01, &lookup_result);
  1613. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected01);
  1614. EXPECT_TRUE(status01.IsOk());
  1615. std::vector<float> unknown_init = {-1, -1, -1, -1, -1, -1};
  1616. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(fast_text, unknown_init);
  1617. auto transform02 = Execute({to_vectors02});
  1618. Status status02 = transform02(token01, &lookup_result);
  1619. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected02);
  1620. EXPECT_TRUE(status02.IsOk());
  1621. std::shared_ptr<TensorTransform> to_vectors03 = std::make_shared<text::ToVectors>(fast_text, unknown_init);
  1622. auto transform03 = Execute({to_vectors03});
  1623. Status status03 = transform03(token02, &lookup_result);
  1624. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected03);
  1625. EXPECT_TRUE(status03.IsOk());
  1626. std::shared_ptr<TensorTransform> to_vectors04 = std::make_shared<text::ToVectors>(fast_text, unknown_init, true);
  1627. auto transform04 = Execute({to_vectors04});
  1628. Status status04 = transform04(token03, &lookup_result);
  1629. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected03);
  1630. EXPECT_TRUE(status04.IsOk());
  1631. }
  1632. /// Feature: ToVectors
  1633. /// Description: test invalid parameter of ToVectors for FastText
  1634. /// Expectation: throw exception correctly
  1635. TEST_F(MindDataTestExecute, TestToVectorsWithInvalidParamForFastText) {
  1636. MS_LOG(INFO) << "Doing MindDataTestExecute-TestToVectorsWithInvalidParamForFastText.";
  1637. std::shared_ptr<Tensor> de_tensor;
  1638. Tensor::CreateScalar<std::string>("none", &de_tensor);
  1639. auto token = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  1640. mindspore::MSTensor lookup_result;
  1641. // Transform params.
  1642. std::string vectors_dir = "data/dataset/test_fast_text/fast_text.vec";
  1643. std::shared_ptr<FastText> fast_text01;
  1644. Status s = FastText::BuildFromFile(&fast_text01, vectors_dir);
  1645. EXPECT_EQ(s, Status::OK());
  1646. std::vector<float> unknown_init = {-1, -1, -1, -1};
  1647. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(fast_text01, unknown_init);
  1648. auto transform01 = Execute({to_vectors01});
  1649. Status status01 = transform01(token, &lookup_result);
  1650. EXPECT_FALSE(status01.IsOk());
  1651. std::shared_ptr<FastText> fast_text02 = nullptr;
  1652. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(fast_text02);
  1653. auto transform02 = Execute({to_vectors02});
  1654. Status status02 = transform02(token, &lookup_result);
  1655. EXPECT_FALSE(status02.IsOk());
  1656. }
  1657. /// Feature: GloVe
  1658. /// Description: test basic usage of GloVe and the ToVectors with default parameter
  1659. /// Expectation: get correct MSTensor
  1660. TEST_F(MindDataTestExecute, TestGloVeParam) {
  1661. MS_LOG(INFO) << "Doing MindDataTestExecute-TestGloVeParam.";
  1662. std::shared_ptr<Tensor> de_tensor;
  1663. Tensor::CreateScalar<std::string>("ok", &de_tensor);
  1664. auto token = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  1665. mindspore::MSTensor lookup_result;
  1666. // Create expected output.
  1667. std::shared_ptr<Tensor> de_expected;
  1668. std::vector<float> expected = {0.418, 0.24968, -0.41242, 0.1217, 0.34527, -0.04445718411};
  1669. dsize_t dim = 6;
  1670. ASSERT_OK(Tensor::CreateFromVector(expected, TensorShape({dim}), &de_expected));
  1671. auto ms_expected = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected));
  1672. // Transform params.
  1673. std::string vectors_dir = "data/dataset/testGloVe/glove.6B.test.txt";
  1674. std::shared_ptr<GloVe> glove01;
  1675. Status s01 = GloVe::BuildFromFile(&glove01, vectors_dir);
  1676. EXPECT_EQ(s01, Status::OK());
  1677. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(glove01);
  1678. auto transform01 = Execute({to_vectors01});
  1679. Status status01 = transform01(token, &lookup_result);
  1680. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected);
  1681. EXPECT_TRUE(status01.IsOk());
  1682. std::shared_ptr<GloVe> glove02;
  1683. Status s02 = GloVe::BuildFromFile(&glove02, vectors_dir, 100);
  1684. EXPECT_EQ(s02, Status::OK());
  1685. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(glove02);
  1686. auto transform02 = Execute({to_vectors02});
  1687. Status status02 = transform02(token, &lookup_result);
  1688. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected);
  1689. EXPECT_TRUE(status02.IsOk());
  1690. std::shared_ptr<GloVe> glove03;
  1691. Status s03 = GloVe::BuildFromFile(&glove03, vectors_dir, 3);
  1692. EXPECT_EQ(s03, Status::OK());
  1693. std::shared_ptr<TensorTransform> to_vectors03 = std::make_shared<text::ToVectors>(glove03);
  1694. auto transform03 = Execute({to_vectors03});
  1695. Status status03 = transform03(token, &lookup_result);
  1696. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected);
  1697. EXPECT_TRUE(status03.IsOk());
  1698. }
  1699. /// Feature: ToVectors
  1700. /// Description: test basic usage of ToVectors and the GloVe with default parameter
  1701. /// Expectation: get correct MSTensor
  1702. TEST_F(MindDataTestExecute, TestToVectorsParamForGloVe) {
  1703. MS_LOG(INFO) << "Doing MindDataTestExecute-TestToVectorsParamForGloVe.";
  1704. std::shared_ptr<Tensor> de_tensor01;
  1705. Tensor::CreateScalar<std::string>("none", &de_tensor01);
  1706. auto token01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor01));
  1707. std::shared_ptr<Tensor> de_tensor02;
  1708. Tensor::CreateScalar<std::string>("ok", &de_tensor02);
  1709. auto token02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor02));
  1710. std::shared_ptr<Tensor> de_tensor03;
  1711. Tensor::CreateScalar<std::string>("OK", &de_tensor03);
  1712. auto token03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor03));
  1713. mindspore::MSTensor lookup_result;
  1714. // Create expected output.
  1715. dsize_t dim = 6;
  1716. std::shared_ptr<Tensor> de_expected01;
  1717. std::vector<float> expected01 = {0, 0, 0, 0, 0, 0};
  1718. ASSERT_OK(Tensor::CreateFromVector(expected01, TensorShape({dim}), &de_expected01));
  1719. auto ms_expected01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected01));
  1720. std::shared_ptr<Tensor> de_expected02;
  1721. std::vector<float> expected02 = {-1, -1, -1, -1, -1, -1};
  1722. ASSERT_OK(Tensor::CreateFromVector(expected02, TensorShape({dim}), &de_expected02));
  1723. auto ms_expected02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected02));
  1724. std::shared_ptr<Tensor> de_expected03;
  1725. std::vector<float> expected03 = {0.418, 0.24968, -0.41242, 0.1217, 0.34527, -0.04445718411};
  1726. ASSERT_OK(Tensor::CreateFromVector(expected03, TensorShape({dim}), &de_expected03));
  1727. auto ms_expected03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected03));
  1728. // Transform params.
  1729. std::string vectors_dir = "data/dataset/testGloVe/glove.6B.test.txt";
  1730. std::shared_ptr<GloVe> glove;
  1731. Status s = GloVe::BuildFromFile(&glove, vectors_dir);
  1732. EXPECT_EQ(s, Status::OK());
  1733. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(glove);
  1734. auto transform01 = Execute({to_vectors01});
  1735. Status status01 = transform01(token01, &lookup_result);
  1736. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected01);
  1737. EXPECT_TRUE(status01.IsOk());
  1738. std::vector<float> unknown_init = {-1, -1, -1, -1, -1, -1};
  1739. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(glove, unknown_init);
  1740. auto transform02 = Execute({to_vectors02});
  1741. Status status02 = transform02(token01, &lookup_result);
  1742. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected02);
  1743. EXPECT_TRUE(status02.IsOk());
  1744. std::shared_ptr<TensorTransform> to_vectors03 = std::make_shared<text::ToVectors>(glove, unknown_init);
  1745. auto transform03 = Execute({to_vectors03});
  1746. Status status03 = transform03(token02, &lookup_result);
  1747. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected03);
  1748. EXPECT_TRUE(status03.IsOk());
  1749. std::shared_ptr<TensorTransform> to_vectors04 = std::make_shared<text::ToVectors>(glove, unknown_init, true);
  1750. auto transform04 = Execute({to_vectors04});
  1751. Status status04 = transform04(token03, &lookup_result);
  1752. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected03);
  1753. EXPECT_TRUE(status04.IsOk());
  1754. }
  1755. /// Feature: ToVectors
  1756. /// Description: test invalid parameter of ToVectors for GloVe
  1757. /// Expectation: throw exception correctly
  1758. TEST_F(MindDataTestExecute, TestToVectorsWithInvalidParamForGloVe) {
  1759. MS_LOG(INFO) << "Doing MindDataTestExecute-TestToVectorsWithInvalidParamForGloVe.";
  1760. std::shared_ptr<Tensor> de_tensor;
  1761. Tensor::CreateScalar<std::string>("none", &de_tensor);
  1762. auto token = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  1763. mindspore::MSTensor lookup_result;
  1764. // Transform params.
  1765. std::string vectors_dir = "data/dataset/testGloVe/glove.6B.test.txt";
  1766. std::shared_ptr<GloVe> glove01;
  1767. Status s = GloVe::BuildFromFile(&glove01, vectors_dir);
  1768. EXPECT_EQ(s, Status::OK());
  1769. std::vector<float> unknown_init = {-1, -1, -1, -1};
  1770. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(glove01, unknown_init);
  1771. auto transform01 = Execute({to_vectors01});
  1772. Status status01 = transform01(token, &lookup_result);
  1773. EXPECT_FALSE(status01.IsOk());
  1774. std::shared_ptr<GloVe> glove02 = nullptr;
  1775. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(glove02);
  1776. auto transform02 = Execute({to_vectors02});
  1777. Status status02 = transform02(token, &lookup_result);
  1778. EXPECT_FALSE(status02.IsOk());
  1779. }
  1780. /// Feature: CharNGram
  1781. /// Description: test basic usage of CharNGram and the ToVectors with default parameter
  1782. /// Expectation: get correct MSTensor
  1783. TEST_F(MindDataTestExecute, TestCharNGramParam) {
  1784. MS_LOG(INFO) << "Doing MindDataTestExecute-TestCharNGramParam.";
  1785. std::shared_ptr<Tensor> de_tensor;
  1786. Tensor::CreateScalar<std::string>("the", &de_tensor);
  1787. auto token = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  1788. mindspore::MSTensor lookup_result;
  1789. // Create expected output.
  1790. std::shared_ptr<Tensor> de_expected01;
  1791. std::vector<float> expected01 = {-0.840079,-0.0270003,-0.833472,0.588367,-0.210012};
  1792. ASSERT_OK(Tensor::CreateFromVector(expected01, &de_expected01));
  1793. auto ms_expected01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected01));
  1794. std::shared_ptr<Tensor> de_expected02;
  1795. std::vector<float> expected02 = {-1.34122,0.0442693,-0.48697,0.662939,-0.367669};
  1796. ASSERT_OK(Tensor::CreateFromVector(expected02, &de_expected02));
  1797. auto ms_expected02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected02));
  1798. // Transform params.
  1799. std::string vectors_dir = "data/dataset/testVectors/char_n_gram_20.txt";
  1800. std::shared_ptr<CharNGram> char_n_gram01;
  1801. Status s01 = CharNGram::BuildFromFile(&char_n_gram01, vectors_dir);
  1802. EXPECT_EQ(s01, Status::OK());
  1803. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(char_n_gram01);
  1804. auto transform01 = Execute({to_vectors01});
  1805. Status status01 = transform01(token, &lookup_result);
  1806. EXPECT_EQ(lookup_result.Shape(), ms_expected01.Shape());
  1807. EXPECT_TRUE(status01.IsOk());
  1808. std::shared_ptr<CharNGram> char_n_gram02;
  1809. Status s02 = CharNGram::BuildFromFile(&char_n_gram02, vectors_dir, 100);
  1810. EXPECT_EQ(s02, Status::OK());
  1811. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(char_n_gram02);
  1812. auto transform02 = Execute({to_vectors02});
  1813. Status status02 = transform02(token, &lookup_result);
  1814. EXPECT_EQ(lookup_result.Shape(), ms_expected01.Shape());
  1815. EXPECT_TRUE(status02.IsOk());
  1816. std::shared_ptr<CharNGram> char_n_gram03;
  1817. Status s03 = CharNGram::BuildFromFile(&char_n_gram03, vectors_dir, 18);
  1818. EXPECT_EQ(s03, Status::OK());
  1819. std::shared_ptr<TensorTransform> to_vectors03 = std::make_shared<text::ToVectors>(char_n_gram03);
  1820. auto transform03 = Execute({to_vectors03});
  1821. Status status03 = transform03(token, &lookup_result);
  1822. EXPECT_EQ(lookup_result.Shape(), ms_expected02.Shape());
  1823. EXPECT_TRUE(status03.IsOk());
  1824. }
  1825. /// Feature: CharNGram
  1826. /// Description: test basic usage of ToVectors and the CharNGram with default parameter
  1827. /// Expectation: get correct MSTensor
  1828. TEST_F(MindDataTestExecute, TestToVectorsParamForCharNGram) {
  1829. MS_LOG(INFO) << "Doing MindDataTestExecute-TestToVectorsParamForCharNGram.";
  1830. std::shared_ptr<Tensor> de_tensor01;
  1831. Tensor::CreateScalar<std::string>("none", &de_tensor01);
  1832. auto token01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor01));
  1833. std::shared_ptr<Tensor> de_tensor02;
  1834. Tensor::CreateScalar<std::string>("the", &de_tensor02);
  1835. auto token02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor02));
  1836. std::shared_ptr<Tensor> de_tensor03;
  1837. Tensor::CreateScalar<std::string>("The", &de_tensor03);
  1838. auto token03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor03));
  1839. mindspore::MSTensor lookup_result;
  1840. // Create expected output.
  1841. std::shared_ptr<Tensor> de_expected01;
  1842. std::vector<float> expected01(5, 0);
  1843. ASSERT_OK(Tensor::CreateFromVector(expected01, &de_expected01));
  1844. auto ms_expected01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected01));
  1845. std::shared_ptr<Tensor> de_expected02;
  1846. std::vector<float> expected02(5, -1);
  1847. ASSERT_OK(Tensor::CreateFromVector(expected02, &de_expected02));
  1848. auto ms_expected02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected02));
  1849. std::shared_ptr<Tensor> de_expected03;
  1850. std::vector<float> expected03 = {-0.840079,-0.0270003,-0.833472,0.588367,-0.210012};
  1851. ASSERT_OK(Tensor::CreateFromVector(expected03, &de_expected03));
  1852. auto ms_expected03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected03));
  1853. // Transform params.
  1854. std::string vectors_dir = "data/dataset/testVectors/char_n_gram_20.txt";
  1855. std::shared_ptr<CharNGram> char_n_gram;
  1856. Status s = CharNGram::BuildFromFile(&char_n_gram, vectors_dir);
  1857. EXPECT_EQ(s, Status::OK());
  1858. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(char_n_gram);
  1859. auto transform01 = Execute({to_vectors01});
  1860. Status status01 = transform01(token01, &lookup_result);
  1861. EXPECT_EQ(lookup_result.Shape(), ms_expected01.Shape());
  1862. EXPECT_TRUE(status01.IsOk());
  1863. std::vector<float> unknown_init(5, -1);
  1864. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(char_n_gram, unknown_init);
  1865. auto transform02 = Execute({to_vectors02});
  1866. Status status02 = transform02(token01, &lookup_result);
  1867. EXPECT_EQ(lookup_result.Shape(), ms_expected02.Shape());
  1868. EXPECT_TRUE(status02.IsOk());
  1869. std::shared_ptr<TensorTransform> to_vectors03 = std::make_shared<text::ToVectors>(char_n_gram, unknown_init);
  1870. auto transform03 = Execute({to_vectors03});
  1871. Status status03 = transform03(token02, &lookup_result);
  1872. EXPECT_EQ(lookup_result.Shape(), ms_expected03.Shape());
  1873. EXPECT_TRUE(status03.IsOk());
  1874. std::shared_ptr<TensorTransform> to_vectors04 = std::make_shared<text::ToVectors>(char_n_gram, unknown_init, true);
  1875. auto transform04 = Execute({to_vectors04});
  1876. Status status04 = transform04(token03, &lookup_result);
  1877. EXPECT_EQ(lookup_result.Shape(), ms_expected03.Shape());
  1878. EXPECT_TRUE(status04.IsOk());
  1879. }
  1880. /// Feature: CharNGram
  1881. /// Description: test invalid parameter of ToVectors
  1882. /// Expectation: throw exception correctly
  1883. TEST_F(MindDataTestExecute, TestToVectorsWithInvalidParamForCharNGram) {
  1884. MS_LOG(INFO) << "Doing MindDataTestExecute-TestToVectorsWithInvalidParamForCharNGram.";
  1885. std::shared_ptr<Tensor> de_tensor;
  1886. Tensor::CreateScalar<std::string>("none", &de_tensor);
  1887. auto token = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  1888. mindspore::MSTensor lookup_result;
  1889. // Transform params.
  1890. std::string vectors_dir = "data/dataset/testVectors/char_n_gram_20.txt";
  1891. std::shared_ptr<CharNGram> char_n_gram01;
  1892. Status s = CharNGram::BuildFromFile(&char_n_gram01, vectors_dir);
  1893. EXPECT_EQ(s, Status::OK());
  1894. std::vector<float> unknown_init(4, -1);
  1895. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(char_n_gram01, unknown_init);
  1896. auto transform01 = Execute({to_vectors01});
  1897. Status status01 = transform01(token, &lookup_result);
  1898. EXPECT_FALSE(status01.IsOk());
  1899. std::shared_ptr<CharNGram> char_n_gram02 = nullptr;
  1900. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(char_n_gram02);
  1901. auto transform02 = Execute({to_vectors02});
  1902. Status status02 = transform02(token, &lookup_result);
  1903. EXPECT_FALSE(status02.IsOk());
  1904. }
  1905. // Feature: DBToAmplitude
  1906. // Description: test DBToAmplitude in eager mode
  1907. // Expectation: the data is processed successfully
  1908. TEST_F(MindDataTestExecute, TestDBToAmplitudeWithEager) {
  1909. MS_LOG(INFO) << "Doing MindDataTestExecute-TestDBToAmplitudeWithEager.";
  1910. // Original waveform
  1911. std::vector<float> labels = {
  1912. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  1913. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  1914. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  1915. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  1916. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  1917. std::shared_ptr<Tensor> input;
  1918. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  1919. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1920. std::shared_ptr<TensorTransform> DBToAmplitude_01 = std::make_shared<audio::DBToAmplitude>(2, 2);
  1921. mindspore::dataset::Execute Transform01({DBToAmplitude_01});
  1922. // Filtered waveform by DBToAmplitude
  1923. Status s01 = Transform01(input_02, &input_02);
  1924. EXPECT_TRUE(s01.IsOk());
  1925. }
  1926. /// Feature: SlidingWindowCmn
  1927. /// Description: test basic function of SlidingWindowCmn
  1928. /// Expectation: get correct number of data
  1929. TEST_F(MindDataTestExecute, TestSlidingWindowCmn) {
  1930. MS_LOG(INFO) << "Doing MindDataTestExecute-TestSlidingWindowCmn.";
  1931. std::shared_ptr<Tensor> input_tensor_;
  1932. int32_t cmn_window = 500;
  1933. int32_t min_cmn_window = 50;
  1934. bool center = false;
  1935. bool norm_vars = false;
  1936. // create tensor shape
  1937. TensorShape s = TensorShape({2, 2, 500});
  1938. // init input vector
  1939. std::vector<float> input_vec(s.NumOfElements());
  1940. for (int idx = 0; idx < input_vec.size(); ++idx) {
  1941. input_vec[idx] = std::rand() % (1000) / (1000.0f);
  1942. }
  1943. ASSERT_OK(Tensor::CreateFromVector(input_vec, s, &input_tensor_));
  1944. auto input_ms = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input_tensor_));
  1945. std::shared_ptr<TensorTransform> sliding_window_cmn_op =
  1946. std::make_shared<audio::SlidingWindowCmn>(cmn_window, min_cmn_window, center, norm_vars);
  1947. // apply sliding_window_cmn
  1948. mindspore::dataset::Execute Transform({sliding_window_cmn_op});
  1949. Status status = Transform(input_ms, &input_ms);
  1950. EXPECT_TRUE(status.IsOk());
  1951. }
  1952. /// Feature: SlidingWindowCmn
  1953. /// Description: test wrong input args of SlidingWindowCmn
  1954. /// Expectation: get nullptr of iterator
  1955. TEST_F(MindDataTestExecute, TestSlidingWindowCmnWrongArgs) {
  1956. MS_LOG(INFO) << "Doing MindDataTestExecute-TestSlidingWindowCmnWrongArgs.";
  1957. std::shared_ptr<Tensor> input_tensor_;
  1958. // create tensor shape
  1959. TensorShape s = TensorShape({2, 2, 500});
  1960. // init input vector
  1961. std::vector<float> input_vec(s.NumOfElements());
  1962. for (int idx = 0; idx < input_vec.size(); ++idx) {
  1963. input_vec[idx] = std::rand() % (1000) / (1000.0f);
  1964. }
  1965. ASSERT_OK(Tensor::CreateFromVector(input_vec, s, &input_tensor_));
  1966. auto input_ms = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input_tensor_));
  1967. // SlidingWindowCmn: cmn_window must be greater than or equal to 0.
  1968. std::shared_ptr<TensorTransform> sliding_window_cmn_op_1 =
  1969. std::make_shared<audio::SlidingWindowCmn>(-1, 100, false, false);
  1970. mindspore::dataset::Execute Transform_1({sliding_window_cmn_op_1});
  1971. Status status_1 = Transform_1(input_ms, &input_ms);
  1972. EXPECT_FALSE(status_1.IsOk());
  1973. // SlidingWindowCmn: min_cmn_window must be greater than or equal to 0.
  1974. std::shared_ptr<TensorTransform> sliding_window_cmn_op_2 =
  1975. std::make_shared<audio::SlidingWindowCmn>(500, -1, false, false);
  1976. mindspore::dataset::Execute Transform_2({sliding_window_cmn_op_2});
  1977. Status status_2 = Transform_2(input_ms, &input_ms);
  1978. EXPECT_FALSE(status_2.IsOk());
  1979. }
  1980. /// Feature: AutoAugment
  1981. /// Description: test AutoAugment eager
  1982. /// Expectation: load one image data and process auto augmentation with given policy on it.
  1983. TEST_F(MindDataTestExecute, TestAutoAugmentEager) {
  1984. MS_LOG(INFO) << "Doing MindDataTestExecute-TestAutoAugmentEager.";
  1985. // Read images
  1986. auto image = ReadFileToTensor("data/dataset/apple.jpg");
  1987. // Transform params
  1988. auto decode = vision::Decode();
  1989. auto auto_augment_op = vision::AutoAugment(AutoAugmentPolicy::kImageNet, InterpolationMode::kLinear, {0, 0, 0});
  1990. auto transform = Execute({decode, auto_augment_op});
  1991. Status rc = transform(image, &image);
  1992. EXPECT_EQ(rc, Status::OK());
  1993. }
  1994. /// Feature: Spectrogram.
  1995. /// Description: test Spectrogram in eager mode.
  1996. /// Expectation: the data is processed successfully.
  1997. TEST_F(MindDataTestExecute, TestSpectrogramEager) {
  1998. MS_LOG(INFO) << "Doing MindDataTestExecute-SpectrogramEager.";
  1999. std::shared_ptr<Tensor> test_input_tensor;
  2000. std::vector<double> waveform = {1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1};
  2001. ASSERT_OK(Tensor::CreateFromVector(waveform, TensorShape({1, (long)waveform.size()}), &test_input_tensor));
  2002. auto input_tensor = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(test_input_tensor));
  2003. std::shared_ptr<TensorTransform> spectrogram = std::make_shared<audio::Spectrogram>(8, 8, 4, 0, WindowType::kHann,
  2004. 2., false, true,
  2005. BorderType::kReflect, true);
  2006. auto transform = Execute({spectrogram});
  2007. Status rc = transform({input_tensor}, &input_tensor);
  2008. ASSERT_TRUE(rc.IsOk());
  2009. }