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 115 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268
  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 = {0.271, 1.634, 9.246, 0.108, 1.138, 1.156, 3.394,
  1041. 1.55, 3.614, 1.8402, 0.718, 4.599, 5.64, 2.510620117187500000e-02,
  1042. 1.38, 5.825, 4.1906, 5.28, 1.052, 9.36};
  1043. std::shared_ptr<Tensor> input;
  1044. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({4, 5}), &input));
  1045. // check gain_in rang [0.0,1.0]
  1046. auto input_01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1047. std::shared_ptr<TensorTransform> phaser_op1 = std::make_shared<audio::Phaser>(44100, 2.0);
  1048. mindspore::dataset::Execute Transform01({phaser_op1});
  1049. Status s01 = Transform01(input_01, &input_01);
  1050. EXPECT_FALSE(s01.IsOk());
  1051. // check gain_out range [0.0,1e9]
  1052. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1053. std::shared_ptr<TensorTransform> phaser_op2 = std::make_shared<audio::Phaser>(44100, 0.2, -0.1);
  1054. mindspore::dataset::Execute Transform02({phaser_op2});
  1055. Status s02 = Transform02(input_02, &input_02);
  1056. EXPECT_FALSE(s02.IsOk());
  1057. // check delay_ms range [0.0,5.0]
  1058. auto input_03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1059. std::shared_ptr<TensorTransform> phaser_op3 = std::make_shared<audio::Phaser>(44100, 0.2, 0.2, 6.0);
  1060. mindspore::dataset::Execute Transform03({phaser_op3});
  1061. Status s03 = Transform03(input_03, &input_03);
  1062. EXPECT_FALSE(s03.IsOk());
  1063. // check decay range [0.0,0.99]
  1064. auto input_04 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1065. std::shared_ptr<TensorTransform> phaser_op4 = std::make_shared<audio::Phaser>(44100, 0.2, 0.2, 4.0, 1.0);
  1066. mindspore::dataset::Execute Transform04({phaser_op4});
  1067. Status s04 = Transform04(input_04, &input_04);
  1068. EXPECT_FALSE(s04.IsOk());
  1069. // check mod_speed range [0.1, 2]
  1070. auto input_05 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1071. std::shared_ptr<TensorTransform> phaser_op5 = std::make_shared<audio::Phaser>(44100, 0.2, 0.2, 4.0, 0.8, 3.0);
  1072. mindspore::dataset::Execute Transform05({phaser_op5});
  1073. Status s05 = Transform05(input_05, &input_05);
  1074. EXPECT_FALSE(s05.IsOk());
  1075. }
  1076. TEST_F(MindDataTestExecute, TestDCShiftEager) {
  1077. MS_LOG(INFO) << "Doing MindDataTestExecute-TestDCShiftEager.";
  1078. std::vector<float> origin = {0.67443, 1.87523, 0.73465, -0.74553, -1.54346, 1.54093, -1.23453};
  1079. std::shared_ptr<Tensor> de_tensor;
  1080. Tensor::CreateFromVector(origin, &de_tensor);
  1081. std::shared_ptr<TensorTransform> dc_shift = std::make_shared<audio::DCShift>(0.5, 0.02);
  1082. auto input = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  1083. mindspore::dataset::Execute Transform({dc_shift});
  1084. Status s = Transform(input, &input);
  1085. ASSERT_TRUE(s.IsOk());
  1086. }
  1087. TEST_F(MindDataTestExecute, TestBiquadWithEager) {
  1088. MS_LOG(INFO) << "Doing MindDataTestExecute-TestBiquadWithEager.";
  1089. // Original waveform
  1090. std::vector<float> labels = {3.716064453125, 12.34765625, 5.246826171875, 1.0894775390625,
  1091. 1.1383056640625, 2.1566162109375, 1.3946533203125, 3.55029296875};
  1092. std::shared_ptr<Tensor> input;
  1093. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 4}), &input));
  1094. auto input_01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1095. std::shared_ptr<TensorTransform> biquad_01 = std::make_shared<audio::Biquad>(1, 0.02, 0.13, 1, 0.12, 0.3);
  1096. mindspore::dataset::Execute Transform01({biquad_01});
  1097. // Filtered waveform by biquad
  1098. Status s01 = Transform01(input_01, &input_01);
  1099. EXPECT_TRUE(s01.IsOk());
  1100. }
  1101. TEST_F(MindDataTestExecute, TestBiquadWithWrongArg) {
  1102. MS_LOG(INFO) << "Doing MindDataTestExecute-TestBiquadWithWrongArg.";
  1103. std::vector<double> labels = {
  1104. 2.716064453125000000e-03,
  1105. 6.347656250000000000e-03,
  1106. 9.246826171875000000e-03,
  1107. 1.089477539062500000e-02,
  1108. };
  1109. std::shared_ptr<Tensor> input;
  1110. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({1, 4}), &input));
  1111. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1112. // Check a0
  1113. MS_LOG(INFO) << "a0 is zero.";
  1114. std::shared_ptr<TensorTransform> biquad_op = std::make_shared<audio::Biquad>(1, 0.02, 0.13, 0, 0.12, 0.3);
  1115. mindspore::dataset::Execute Transform01({biquad_op});
  1116. Status s01 = Transform01(input_02, &input_02);
  1117. EXPECT_FALSE(s01.IsOk());
  1118. }
  1119. TEST_F(MindDataTestExecute, TestFade) {
  1120. MS_LOG(INFO) << "Doing MindDataTestExecute-TestFade.";
  1121. std::vector<float> waveform = {
  1122. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  1123. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  1124. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  1125. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  1126. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  1127. std::shared_ptr<Tensor> input;
  1128. ASSERT_OK(Tensor::CreateFromVector(waveform, TensorShape({1, 20}), &input));
  1129. auto input_01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1130. std::shared_ptr<TensorTransform> fade01 = std::make_shared<audio::Fade>(5, 6, FadeShape::kLinear);
  1131. mindspore::dataset::Execute Transform01({fade01});
  1132. Status s01 = Transform01(input_01, &input_01);
  1133. EXPECT_TRUE(s01.IsOk());
  1134. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1135. std::shared_ptr<TensorTransform> fade02 = std::make_shared<audio::Fade>(5, 6, FadeShape::kQuarterSine);
  1136. mindspore::dataset::Execute Transform02({fade02});
  1137. Status s02 = Transform02(input_02, &input_02);
  1138. EXPECT_TRUE(s02.IsOk());
  1139. auto input_03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1140. std::shared_ptr<TensorTransform> fade03 = std::make_shared<audio::Fade>(5, 6, FadeShape::kExponential);
  1141. mindspore::dataset::Execute Transform03({fade03});
  1142. Status s03 = Transform03(input_03, &input_03);
  1143. EXPECT_TRUE(s03.IsOk());
  1144. auto input_04 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1145. std::shared_ptr<TensorTransform> fade04 = std::make_shared<audio::Fade>(5, 6, FadeShape::kHalfSine);
  1146. mindspore::dataset::Execute Transform04({fade04});
  1147. Status s04 = Transform01(input_04, &input_04);
  1148. EXPECT_TRUE(s04.IsOk());
  1149. auto input_05 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1150. std::shared_ptr<TensorTransform> fade05 = std::make_shared<audio::Fade>(5, 6, FadeShape::kLogarithmic);
  1151. mindspore::dataset::Execute Transform05({fade05});
  1152. Status s05 = Transform01(input_05, &input_05);
  1153. EXPECT_TRUE(s05.IsOk());
  1154. }
  1155. TEST_F(MindDataTestExecute, TestFadeDefaultArg) {
  1156. MS_LOG(INFO) << "Doing MindDataTestExecute-TestFadeDefaultArg.";
  1157. std::vector<double> waveform = {
  1158. 1.573897564868000000e-03, 5.462374385400000000e-03, 3.584989689205400000e-03, 2.035667767462500000e-02,
  1159. 2.353543454062500000e-02, 1.256616210937500000e-02, 2.394653320312500000e-02, 5.243553968750000000e-02,
  1160. 2.434554533002500000e-02, 3.454566960937500000e-02, 2.343545454437500000e-02, 2.534343093750000000e-02,
  1161. 2.354465654550000000e-02, 1.453545517187500000e-02, 1.454645535875000000e-02, 1.433243195312500000e-02,
  1162. 1.434354554812500000e-02, 3.343435276865400000e-02, 1.234257687312500000e-02, 5.368896484375000000e-03};
  1163. std::shared_ptr<Tensor> input;
  1164. ASSERT_OK(Tensor::CreateFromVector(waveform, TensorShape({2, 10}), &input));
  1165. auto input_01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1166. std::shared_ptr<TensorTransform> fade01 = std::make_shared<audio::Fade>();
  1167. mindspore::dataset::Execute Transform01({fade01});
  1168. Status s01 = Transform01(input_01, &input_01);
  1169. EXPECT_TRUE(s01.IsOk());
  1170. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1171. std::shared_ptr<TensorTransform> fade02 = std::make_shared<audio::Fade>(5);
  1172. mindspore::dataset::Execute Transform02({fade02});
  1173. Status s02 = Transform02(input_02, &input_02);
  1174. EXPECT_TRUE(s02.IsOk());
  1175. auto input_03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1176. std::shared_ptr<TensorTransform> fade03 = std::make_shared<audio::Fade>(5, 6);
  1177. mindspore::dataset::Execute Transform03({fade03});
  1178. Status s03 = Transform03(input_03, &input_03);
  1179. EXPECT_TRUE(s03.IsOk());
  1180. }
  1181. TEST_F(MindDataTestExecute, TestFadeWithInvalidArg) {
  1182. MS_LOG(INFO) << "Doing MindDataTestExecute-TestFadeWithInvalidArg.";
  1183. std::vector<float> waveform = {
  1184. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  1185. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  1186. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  1187. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  1188. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  1189. std::shared_ptr<Tensor> input;
  1190. ASSERT_OK(Tensor::CreateFromVector(waveform, TensorShape({1, 20}), &input));
  1191. auto input_01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1192. std::shared_ptr<TensorTransform> fade1 = std::make_shared<audio::Fade>(-5, 6);
  1193. mindspore::dataset::Execute Transform01({fade1});
  1194. Status s01 = Transform01(input_01, &input_01);
  1195. EXPECT_FALSE(s01.IsOk());
  1196. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1197. std::shared_ptr<TensorTransform> fade2 = std::make_shared<audio::Fade>(0, -1);
  1198. mindspore::dataset::Execute Transform02({fade2});
  1199. Status s02 = Transform02(input_02, &input_02);
  1200. EXPECT_FALSE(s02.IsOk());
  1201. auto input_03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1202. std::shared_ptr<TensorTransform> fade3 = std::make_shared<audio::Fade>(30, 10);
  1203. mindspore::dataset::Execute Transform03({fade3});
  1204. Status s03 = Transform03(input_03, &input_03);
  1205. EXPECT_FALSE(s03.IsOk());
  1206. auto input_04 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1207. std::shared_ptr<TensorTransform> fade4 = std::make_shared<audio::Fade>(10, 30);
  1208. mindspore::dataset::Execute Transform04({fade4});
  1209. Status s04 = Transform04(input_04, &input_04);
  1210. EXPECT_FALSE(s04.IsOk());
  1211. }
  1212. TEST_F(MindDataTestExecute, TestVolDefalutValue) {
  1213. MS_LOG(INFO) << "Doing MindDataTestExecute-TestVolDefalutValue.";
  1214. std::shared_ptr<Tensor> input_tensor_;
  1215. TensorShape s = TensorShape({2, 6});
  1216. ASSERT_OK(Tensor::CreateFromVector(
  1217. 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_));
  1218. auto input_tensor = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input_tensor_));
  1219. std::shared_ptr<TensorTransform> vol_op = std::make_shared<audio::Vol>(0.333);
  1220. mindspore::dataset::Execute transform({vol_op});
  1221. Status status = transform(input_tensor, &input_tensor);
  1222. EXPECT_TRUE(status.IsOk());
  1223. }
  1224. TEST_F(MindDataTestExecute, TestVolGainTypePower) {
  1225. MS_LOG(INFO) << "Doing MindDataTestExecute-TestVolGainTypePower.";
  1226. std::shared_ptr<Tensor> input_tensor_;
  1227. TensorShape s = TensorShape({4, 3});
  1228. ASSERT_OK(Tensor::CreateFromVector(
  1229. 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_));
  1230. auto input_tensor = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input_tensor_));
  1231. std::shared_ptr<TensorTransform> vol_op = std::make_shared<audio::Vol>(0.2, GainType::kPower);
  1232. mindspore::dataset::Execute transform({vol_op});
  1233. Status status = transform(input_tensor, &input_tensor);
  1234. EXPECT_TRUE(status.IsOk());
  1235. }
  1236. TEST_F(MindDataTestExecute, TestMagphaseEager) {
  1237. MS_LOG(INFO) << "Doing MindDataTestExecute-TestMagphaseEager.";
  1238. float power = 1.0;
  1239. std::vector<mindspore::MSTensor> output_tensor;
  1240. std::shared_ptr<Tensor> test;
  1241. std::vector<float> test_vector = {3, 4, -3, 4, 3, -4, -3, -4, 5, 12, -5, 12, 5, -12, -5, -12};
  1242. Tensor::CreateFromVector(test_vector, TensorShape({2, 4, 2}), &test);
  1243. auto input_tensor = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(test));
  1244. std::shared_ptr<TensorTransform> magphase(new audio::Magphase({power}));
  1245. auto transform = Execute({magphase});
  1246. Status rc = transform({input_tensor}, &output_tensor);
  1247. ASSERT_TRUE(rc.IsOk());
  1248. }
  1249. TEST_F(MindDataTestExecute, TestRandomInvertEager) {
  1250. MS_LOG(INFO) << "Doing MindDataTestExecute-TestRandomInvertEager.";
  1251. // Read images
  1252. auto image = ReadFileToTensor("data/dataset/apple.jpg");
  1253. // Transform params
  1254. auto decode = vision::Decode();
  1255. auto random_invert_op = vision::RandomInvert(0.6);
  1256. auto transform = Execute({decode, random_invert_op});
  1257. Status rc = transform(image, &image);
  1258. EXPECT_EQ(rc, Status::OK());
  1259. }
  1260. TEST_F(MindDataTestExecute, TestRandomAutoContrastEager) {
  1261. MS_LOG(INFO) << "Doing MindDataTestExecute-TestRandomAutoContrastEager.";
  1262. // Read images
  1263. auto image = ReadFileToTensor("data/dataset/apple.jpg");
  1264. // Transform params
  1265. auto decode = vision::Decode();
  1266. auto random_auto_contrast_op = vision::RandomAutoContrast(0.6);
  1267. auto transform = Execute({decode, random_auto_contrast_op});
  1268. Status rc = transform(image, &image);
  1269. EXPECT_EQ(rc, Status::OK());
  1270. }
  1271. TEST_F(MindDataTestExecute, TestRandomEqualizeEager) {
  1272. MS_LOG(INFO) << "Doing MindDataTestExecute-TestRandomEqualizeEager.";
  1273. // Read images
  1274. auto image = ReadFileToTensor("data/dataset/apple.jpg");
  1275. // Transform params
  1276. auto decode = vision::Decode();
  1277. auto random_equalize_op = vision::RandomEqualize(0.6);
  1278. auto transform = Execute({decode, random_equalize_op});
  1279. Status rc = transform(image, &image);
  1280. EXPECT_EQ(rc, Status::OK());
  1281. }
  1282. TEST_F(MindDataTestExecute, TestRandomAdjustSharpnessEager) {
  1283. MS_LOG(INFO) << "Doing MindDataTestExecute-TestRandomAdjustSharpnessEager.";
  1284. // Read images
  1285. auto image = ReadFileToTensor("data/dataset/apple.jpg");
  1286. // Transform params
  1287. auto decode = vision::Decode();
  1288. auto random_adjust_sharpness_op = vision::RandomAdjustSharpness(2.0, 0.6);
  1289. auto transform = Execute({decode, random_adjust_sharpness_op});
  1290. Status rc = transform(image, &image);
  1291. EXPECT_EQ(rc, Status::OK());
  1292. }
  1293. TEST_F(MindDataTestExecute, TestDetectPitchFrequencyWithEager) {
  1294. MS_LOG(INFO) << "Doing MindDataTestExecute-TestDetectPitchFrequencyWithEager.";
  1295. // Original waveform
  1296. std::vector<double> labels = {
  1297. 3.716064453125000000e-03, 2.347656250000000000e-03, 9.246826171875000000e-03, 4.089477539062500000e-02,
  1298. 3.138305664062500000e-02, 1.156616210937500000e-02, 0.394653320312500000e-02, 1.550292968750000000e-02,
  1299. 1.614379882812500000e-02, 0.840209960937500000e-02, 1.718139648437500000e-02, 2.599121093750000000e-02,
  1300. 5.647949218750000000e-02, 1.510620117187500000e-02, 2.385498046875000000e-02, 1.345825195312500000e-02,
  1301. 1.419067382812500000e-02, 3.284790039062500000e-02, 9.052856445312500000e-02, 2.368896484375000000e-03};
  1302. std::shared_ptr<Tensor> input;
  1303. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  1304. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1305. std::shared_ptr<TensorTransform> detect_pitch_frequency_01 =
  1306. std::make_shared<audio::DetectPitchFrequency>(30, 0.1, 3, 5, 25);
  1307. mindspore::dataset::Execute Transform01({detect_pitch_frequency_01});
  1308. // Detect pitch frequence
  1309. Status s01 = Transform01(input_02, &input_02);
  1310. EXPECT_TRUE(s01.IsOk());
  1311. }
  1312. TEST_F(MindDataTestExecute, TestDetectPitchFrequencyWithWrongArg) {
  1313. MS_LOG(INFO) << "Doing MindDataTestExecute-TestDetectPitchFrequencyWithWrongArg.";
  1314. std::vector<float> labels = {
  1315. 0.716064e-03, 5.347656e-03, 6.246826e-03, 2.089477e-02, 7.138305e-02,
  1316. 4.156616e-02, 1.394653e-02, 3.550292e-02, 0.614379e-02, 3.840209e-02,
  1317. };
  1318. std::shared_ptr<Tensor> input;
  1319. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 5}), &input));
  1320. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1321. // Check frame_time
  1322. MS_LOG(INFO) << "frame_time is zero.";
  1323. std::shared_ptr<TensorTransform> detect_pitch_frequency_01 =
  1324. std::make_shared<audio::DetectPitchFrequency>(40, 0, 3, 3, 20);
  1325. mindspore::dataset::Execute Transform01({detect_pitch_frequency_01});
  1326. Status s01 = Transform01(input_02, &input_02);
  1327. EXPECT_FALSE(s01.IsOk());
  1328. // Check win_length
  1329. MS_LOG(INFO) << "win_length is zero.";
  1330. std::shared_ptr<TensorTransform> detect_pitch_frequency_02 =
  1331. std::make_shared<audio::DetectPitchFrequency>(40, 0.1, 0, 3, 20);
  1332. mindspore::dataset::Execute Transform02({detect_pitch_frequency_02});
  1333. Status s02 = Transform02(input_02, &input_02);
  1334. EXPECT_FALSE(s02.IsOk());
  1335. // Check freq_low
  1336. MS_LOG(INFO) << "freq_low is zero.";
  1337. std::shared_ptr<TensorTransform> detect_pitch_frequency_03 =
  1338. std::make_shared<audio::DetectPitchFrequency>(40, 0.1, 3, 0, 20);
  1339. mindspore::dataset::Execute Transform03({detect_pitch_frequency_03});
  1340. Status s03 = Transform03(input_02, &input_02);
  1341. EXPECT_FALSE(s03.IsOk());
  1342. // Check freq_high
  1343. MS_LOG(INFO) << "freq_high is zero.";
  1344. std::shared_ptr<TensorTransform> detect_pitch_frequency_04 =
  1345. std::make_shared<audio::DetectPitchFrequency>(40, 0.1, 3, 3, 0);
  1346. mindspore::dataset::Execute Transform04({detect_pitch_frequency_04});
  1347. Status s04 = Transform04(input_02, &input_02);
  1348. EXPECT_FALSE(s04.IsOk());
  1349. // Check sample_rate
  1350. MS_LOG(INFO) << "sample_rate is zero.";
  1351. std::shared_ptr<TensorTransform> detect_pitch_frequency_05 = std::make_shared<audio::DetectPitchFrequency>(0);
  1352. mindspore::dataset::Execute Transform05({detect_pitch_frequency_05});
  1353. Status s05 = Transform05(input_02, &input_02);
  1354. EXPECT_FALSE(s05.IsOk());
  1355. }
  1356. /// Feature: Dither
  1357. /// Description: test Dither in eager mode
  1358. /// Expectation: the data is processed successfully
  1359. TEST_F(MindDataTestExecute, TestDitherWithEager) {
  1360. MS_LOG(INFO) << "Doing MindDataTestExecute-TestDitherWithEager.";
  1361. // Original waveform
  1362. std::vector<float> labels = {
  1363. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  1364. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  1365. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  1366. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  1367. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  1368. std::shared_ptr<Tensor> input;
  1369. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  1370. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1371. std::shared_ptr<TensorTransform> dither_01 = std::make_shared<audio::Dither>();
  1372. mindspore::dataset::Execute Transform01({dither_01});
  1373. // Filtered waveform by Dither
  1374. Status s01 = Transform01(input_02, &input_02);
  1375. EXPECT_TRUE(s01.IsOk());
  1376. }
  1377. TEST_F(MindDataTestExecute, TestFlangerWithEager) {
  1378. MS_LOG(INFO) << "Doing MindDataTestExecute-TestFlangerWithEager.";
  1379. // Original waveform
  1380. std::vector<float> labels = {
  1381. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  1382. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  1383. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  1384. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  1385. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  1386. std::shared_ptr<Tensor> input;
  1387. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  1388. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1389. std::shared_ptr<TensorTransform> flanger_01 = std::make_shared<audio::Flanger>(44100);
  1390. mindspore::dataset::Execute Transform01({flanger_01});
  1391. // Filtered waveform by flanger
  1392. Status s01 = Transform01(input_02, &input_02);
  1393. EXPECT_TRUE(s01.IsOk());
  1394. }
  1395. TEST_F(MindDataTestExecute, TestFlangerWithWrongArg) {
  1396. MS_LOG(INFO) << "Doing MindDataTestExecute-TestFlangerWithWrongArg.";
  1397. std::vector<double> labels = {1.143, 1.3123, 2.632, 2.554, 1.213, 1.3, 0.456, 3.563};
  1398. std::shared_ptr<Tensor> input;
  1399. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({4, 2}), &input));
  1400. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1401. // Check sample_rate
  1402. MS_LOG(INFO) << "sample_rate is zero.";
  1403. std::shared_ptr<TensorTransform> flanger_op = std::make_shared<audio::Flanger>(0);
  1404. mindspore::dataset::Execute Transform01({flanger_op});
  1405. Status s01 = Transform01(input_02, &input_02);
  1406. EXPECT_FALSE(s01.IsOk());
  1407. }
  1408. /// Feature: Vectors
  1409. /// Description: test basic usage of Vectors and the ToVectors with default parameter
  1410. /// Expectation: get correct MSTensor
  1411. TEST_F(MindDataTestExecute, TestVectorsParam) {
  1412. MS_LOG(INFO) << "Doing MindDataTestExecute-TestVectorsParam.";
  1413. std::shared_ptr<Tensor> de_tensor;
  1414. Tensor::CreateScalar<std::string>("ok", &de_tensor);
  1415. auto token = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  1416. mindspore::MSTensor lookup_result;
  1417. // Create expected output.
  1418. std::shared_ptr<Tensor> de_expected;
  1419. std::vector<float> expected = {0.418, 0.24968, -0.41242, 0.1217, 0.34527, -0.04445718411};
  1420. dsize_t dim = 6;
  1421. ASSERT_OK(Tensor::CreateFromVector(expected, TensorShape({dim}), &de_expected));
  1422. auto ms_expected = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected));
  1423. // Transform params.
  1424. std::string vectors_dir = "data/dataset/testVectors/vectors.txt";
  1425. std::shared_ptr<Vectors> vectors01;
  1426. Status s01 = Vectors::BuildFromFile(&vectors01, vectors_dir);
  1427. EXPECT_EQ(s01, Status::OK());
  1428. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(vectors01);
  1429. auto transform01 = Execute({to_vectors01});
  1430. Status status01 = transform01(token, &lookup_result);
  1431. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected);
  1432. EXPECT_TRUE(status01.IsOk());
  1433. std::shared_ptr<Vectors> vectors02;
  1434. Status s02 = Vectors::BuildFromFile(&vectors02, vectors_dir, 100);
  1435. EXPECT_EQ(s02, Status::OK());
  1436. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(vectors02);
  1437. auto transform02 = Execute({to_vectors02});
  1438. Status status02 = transform02(token, &lookup_result);
  1439. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected);
  1440. EXPECT_TRUE(status02.IsOk());
  1441. std::shared_ptr<Vectors> vectors03;
  1442. Status s03 = Vectors::BuildFromFile(&vectors03, vectors_dir, 3);
  1443. EXPECT_EQ(s03, Status::OK());
  1444. std::shared_ptr<TensorTransform> to_vectors03 = std::make_shared<text::ToVectors>(vectors03);
  1445. auto transform03 = Execute({to_vectors03});
  1446. Status status03 = transform03(token, &lookup_result);
  1447. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected);
  1448. EXPECT_TRUE(status03.IsOk());
  1449. }
  1450. /// Feature: ToVectors
  1451. /// Description: test basic usage of ToVectors and the Vectors with default parameter
  1452. /// Expectation: get correct MSTensor
  1453. TEST_F(MindDataTestExecute, TestToVectorsParam) {
  1454. MS_LOG(INFO) << "Doing MindDataTestExecute-TestToVectorsParam.";
  1455. std::shared_ptr<Tensor> de_tensor01;
  1456. Tensor::CreateScalar<std::string>("none", &de_tensor01);
  1457. auto token01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor01));
  1458. std::shared_ptr<Tensor> de_tensor02;
  1459. Tensor::CreateScalar<std::string>("ok", &de_tensor02);
  1460. auto token02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor02));
  1461. std::shared_ptr<Tensor> de_tensor03;
  1462. Tensor::CreateScalar<std::string>("OK", &de_tensor03);
  1463. auto token03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor03));
  1464. mindspore::MSTensor lookup_result;
  1465. // Create expected output.
  1466. dsize_t dim = 6;
  1467. std::shared_ptr<Tensor> de_expected01;
  1468. std::vector<float> expected01 = {0, 0, 0, 0, 0, 0};
  1469. ASSERT_OK(Tensor::CreateFromVector(expected01, TensorShape({dim}), &de_expected01));
  1470. auto ms_expected01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected01));
  1471. std::shared_ptr<Tensor> de_expected02;
  1472. std::vector<float> expected02 = {-1, -1, -1, -1, -1, -1};
  1473. ASSERT_OK(Tensor::CreateFromVector(expected02, TensorShape({dim}), &de_expected02));
  1474. auto ms_expected02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected02));
  1475. std::shared_ptr<Tensor> de_expected03;
  1476. std::vector<float> expected03 = {0.418, 0.24968, -0.41242, 0.1217, 0.34527, -0.04445718411};
  1477. ASSERT_OK(Tensor::CreateFromVector(expected03, TensorShape({dim}), &de_expected03));
  1478. auto ms_expected03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected03));
  1479. // Transform params.
  1480. std::string vectors_dir = "data/dataset/testVectors/vectors.txt";
  1481. std::shared_ptr<Vectors> vectors;
  1482. Status s = Vectors::BuildFromFile(&vectors, vectors_dir);
  1483. EXPECT_EQ(s, Status::OK());
  1484. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(vectors);
  1485. auto transform01 = Execute({to_vectors01});
  1486. Status status01 = transform01(token01, &lookup_result);
  1487. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected01);
  1488. EXPECT_TRUE(status01.IsOk());
  1489. std::vector<float> unknown_init = {-1, -1, -1, -1, -1, -1};
  1490. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(vectors, unknown_init);
  1491. auto transform02 = Execute({to_vectors02});
  1492. Status status02 = transform02(token01, &lookup_result);
  1493. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected02);
  1494. EXPECT_TRUE(status02.IsOk());
  1495. std::shared_ptr<TensorTransform> to_vectors03 = std::make_shared<text::ToVectors>(vectors, unknown_init);
  1496. auto transform03 = Execute({to_vectors03});
  1497. Status status03 = transform03(token02, &lookup_result);
  1498. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected03);
  1499. EXPECT_TRUE(status03.IsOk());
  1500. std::shared_ptr<TensorTransform> to_vectors04 = std::make_shared<text::ToVectors>(vectors, unknown_init, true);
  1501. auto transform04 = Execute({to_vectors04});
  1502. Status status04 = transform04(token03, &lookup_result);
  1503. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected03);
  1504. EXPECT_TRUE(status04.IsOk());
  1505. }
  1506. /// Feature: ToVectors
  1507. /// Description: test invalid parameter of ToVectors
  1508. /// Expectation: throw exception correctly
  1509. TEST_F(MindDataTestExecute, TestToVectorsWithInvalidParam) {
  1510. MS_LOG(INFO) << "Doing MindDataTestExecute-TestToVectorsWithInvalidParam.";
  1511. std::shared_ptr<Tensor> de_tensor;
  1512. Tensor::CreateScalar<std::string>("none", &de_tensor);
  1513. auto token = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  1514. mindspore::MSTensor lookup_result;
  1515. // Transform params.
  1516. std::string vectors_dir = "data/dataset/testVectors/vectors.txt";
  1517. std::shared_ptr<Vectors> vectors01;
  1518. Status s = Vectors::BuildFromFile(&vectors01, vectors_dir);
  1519. EXPECT_EQ(s, Status::OK());
  1520. std::vector<float> unknown_init = {-1, -1, -1, -1};
  1521. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(vectors01, unknown_init);
  1522. auto transform01 = Execute({to_vectors01});
  1523. Status status01 = transform01(token, &lookup_result);
  1524. EXPECT_FALSE(status01.IsOk());
  1525. std::shared_ptr<Vectors> vectors02 = nullptr;
  1526. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(vectors02);
  1527. auto transform02 = Execute({to_vectors02});
  1528. Status status02 = transform02(token, &lookup_result);
  1529. EXPECT_FALSE(status02.IsOk());
  1530. }
  1531. /// Feature: FastText
  1532. /// Description: test basic usage of FastText and the ToVectors with default parameter
  1533. /// Expectation: get correct MSTensor
  1534. TEST_F(MindDataTestExecute, TestFastTextParam) {
  1535. MS_LOG(INFO) << "Doing MindDataTestExecute-TestFastTextParam.";
  1536. std::shared_ptr<Tensor> de_tensor;
  1537. Tensor::CreateScalar<std::string>("ok", &de_tensor);
  1538. auto token = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  1539. mindspore::MSTensor lookup_result;
  1540. // Create expected output.
  1541. std::shared_ptr<Tensor> de_expected;
  1542. std::vector<float> expected = {0.418, 0.24968, -0.41242, 0.1217, 0.34527, -0.04445718411};
  1543. dsize_t dim = 6;
  1544. ASSERT_OK(Tensor::CreateFromVector(expected, TensorShape({dim}), &de_expected));
  1545. auto ms_expected = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected));
  1546. // Transform params.
  1547. std::string vectors_dir = "data/dataset/test_fast_text/fast_text.vec";
  1548. std::shared_ptr<FastText> fast_text01;
  1549. Status s01 = FastText::BuildFromFile(&fast_text01, vectors_dir);
  1550. EXPECT_EQ(s01, Status::OK());
  1551. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(fast_text01);
  1552. auto transform01 = Execute({to_vectors01});
  1553. Status status01 = transform01(token, &lookup_result);
  1554. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected);
  1555. EXPECT_TRUE(status01.IsOk());
  1556. std::shared_ptr<FastText> fast_text02;
  1557. Status s02 = FastText::BuildFromFile(&fast_text02, vectors_dir, 100);
  1558. EXPECT_EQ(s02, Status::OK());
  1559. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(fast_text02);
  1560. auto transform02 = Execute({to_vectors02});
  1561. Status status02 = transform02(token, &lookup_result);
  1562. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected);
  1563. EXPECT_TRUE(status02.IsOk());
  1564. std::shared_ptr<FastText> fast_text03;
  1565. Status s03 = FastText::BuildFromFile(&fast_text03, vectors_dir, 3);
  1566. EXPECT_EQ(s03, Status::OK());
  1567. std::shared_ptr<TensorTransform> to_vectors03 = std::make_shared<text::ToVectors>(fast_text03);
  1568. auto transform03 = Execute({to_vectors03});
  1569. Status status03 = transform03(token, &lookup_result);
  1570. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected);
  1571. EXPECT_TRUE(status03.IsOk());
  1572. }
  1573. /// Feature: ToVectors
  1574. /// Description: test basic usage of ToVectors and the FastText with default parameter
  1575. /// Expectation: get correct MSTensor
  1576. TEST_F(MindDataTestExecute, TestToVectorsParamForFastText) {
  1577. MS_LOG(INFO) << "Doing MindDataTestExecute-TestToVectorsParamForFastText.";
  1578. std::shared_ptr<Tensor> de_tensor01;
  1579. Tensor::CreateScalar<std::string>("none", &de_tensor01);
  1580. auto token01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor01));
  1581. std::shared_ptr<Tensor> de_tensor02;
  1582. Tensor::CreateScalar<std::string>("ok", &de_tensor02);
  1583. auto token02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor02));
  1584. std::shared_ptr<Tensor> de_tensor03;
  1585. Tensor::CreateScalar<std::string>("OK", &de_tensor03);
  1586. auto token03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor03));
  1587. mindspore::MSTensor lookup_result;
  1588. // Create expected output.
  1589. dsize_t dim = 6;
  1590. std::shared_ptr<Tensor> de_expected01;
  1591. std::vector<float> expected01 = {0, 0, 0, 0, 0, 0};
  1592. ASSERT_OK(Tensor::CreateFromVector(expected01, TensorShape({dim}), &de_expected01));
  1593. auto ms_expected01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected01));
  1594. std::shared_ptr<Tensor> de_expected02;
  1595. std::vector<float> expected02 = {-1, -1, -1, -1, -1, -1};
  1596. ASSERT_OK(Tensor::CreateFromVector(expected02, TensorShape({dim}), &de_expected02));
  1597. auto ms_expected02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected02));
  1598. std::shared_ptr<Tensor> de_expected03;
  1599. std::vector<float> expected03 = {0.418, 0.24968, -0.41242, 0.1217, 0.34527, -0.04445718411};
  1600. ASSERT_OK(Tensor::CreateFromVector(expected03, TensorShape({dim}), &de_expected03));
  1601. auto ms_expected03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected03));
  1602. // Transform params.
  1603. std::string vectors_dir = "data/dataset/test_fast_text/fast_text.vec";
  1604. std::shared_ptr<FastText> fast_text;
  1605. Status s = FastText::BuildFromFile(&fast_text, vectors_dir);
  1606. EXPECT_EQ(s, Status::OK());
  1607. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(fast_text);
  1608. auto transform01 = Execute({to_vectors01});
  1609. Status status01 = transform01(token01, &lookup_result);
  1610. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected01);
  1611. EXPECT_TRUE(status01.IsOk());
  1612. std::vector<float> unknown_init = {-1, -1, -1, -1, -1, -1};
  1613. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(fast_text, unknown_init);
  1614. auto transform02 = Execute({to_vectors02});
  1615. Status status02 = transform02(token01, &lookup_result);
  1616. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected02);
  1617. EXPECT_TRUE(status02.IsOk());
  1618. std::shared_ptr<TensorTransform> to_vectors03 = std::make_shared<text::ToVectors>(fast_text, unknown_init);
  1619. auto transform03 = Execute({to_vectors03});
  1620. Status status03 = transform03(token02, &lookup_result);
  1621. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected03);
  1622. EXPECT_TRUE(status03.IsOk());
  1623. std::shared_ptr<TensorTransform> to_vectors04 = std::make_shared<text::ToVectors>(fast_text, unknown_init, true);
  1624. auto transform04 = Execute({to_vectors04});
  1625. Status status04 = transform04(token03, &lookup_result);
  1626. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected03);
  1627. EXPECT_TRUE(status04.IsOk());
  1628. }
  1629. /// Feature: ToVectors
  1630. /// Description: test invalid parameter of ToVectors for FastText
  1631. /// Expectation: throw exception correctly
  1632. TEST_F(MindDataTestExecute, TestToVectorsWithInvalidParamForFastText) {
  1633. MS_LOG(INFO) << "Doing MindDataTestExecute-TestToVectorsWithInvalidParamForFastText.";
  1634. std::shared_ptr<Tensor> de_tensor;
  1635. Tensor::CreateScalar<std::string>("none", &de_tensor);
  1636. auto token = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  1637. mindspore::MSTensor lookup_result;
  1638. // Transform params.
  1639. std::string vectors_dir = "data/dataset/test_fast_text/fast_text.vec";
  1640. std::shared_ptr<FastText> fast_text01;
  1641. Status s = FastText::BuildFromFile(&fast_text01, vectors_dir);
  1642. EXPECT_EQ(s, Status::OK());
  1643. std::vector<float> unknown_init = {-1, -1, -1, -1};
  1644. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(fast_text01, unknown_init);
  1645. auto transform01 = Execute({to_vectors01});
  1646. Status status01 = transform01(token, &lookup_result);
  1647. EXPECT_FALSE(status01.IsOk());
  1648. std::shared_ptr<FastText> fast_text02 = nullptr;
  1649. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(fast_text02);
  1650. auto transform02 = Execute({to_vectors02});
  1651. Status status02 = transform02(token, &lookup_result);
  1652. EXPECT_FALSE(status02.IsOk());
  1653. }
  1654. /// Feature: GloVe
  1655. /// Description: test basic usage of GloVe and the ToVectors with default parameter
  1656. /// Expectation: get correct MSTensor
  1657. TEST_F(MindDataTestExecute, TestGloVeParam) {
  1658. MS_LOG(INFO) << "Doing MindDataTestExecute-TestGloVeParam.";
  1659. std::shared_ptr<Tensor> de_tensor;
  1660. Tensor::CreateScalar<std::string>("ok", &de_tensor);
  1661. auto token = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  1662. mindspore::MSTensor lookup_result;
  1663. // Create expected output.
  1664. std::shared_ptr<Tensor> de_expected;
  1665. std::vector<float> expected = {0.418, 0.24968, -0.41242, 0.1217, 0.34527, -0.04445718411};
  1666. dsize_t dim = 6;
  1667. ASSERT_OK(Tensor::CreateFromVector(expected, TensorShape({dim}), &de_expected));
  1668. auto ms_expected = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected));
  1669. // Transform params.
  1670. std::string vectors_dir = "data/dataset/testGloVe/glove.6B.test.txt";
  1671. std::shared_ptr<GloVe> glove01;
  1672. Status s01 = GloVe::BuildFromFile(&glove01, vectors_dir);
  1673. EXPECT_EQ(s01, Status::OK());
  1674. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(glove01);
  1675. auto transform01 = Execute({to_vectors01});
  1676. Status status01 = transform01(token, &lookup_result);
  1677. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected);
  1678. EXPECT_TRUE(status01.IsOk());
  1679. std::shared_ptr<GloVe> glove02;
  1680. Status s02 = GloVe::BuildFromFile(&glove02, vectors_dir, 100);
  1681. EXPECT_EQ(s02, Status::OK());
  1682. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(glove02);
  1683. auto transform02 = Execute({to_vectors02});
  1684. Status status02 = transform02(token, &lookup_result);
  1685. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected);
  1686. EXPECT_TRUE(status02.IsOk());
  1687. std::shared_ptr<GloVe> glove03;
  1688. Status s03 = GloVe::BuildFromFile(&glove03, vectors_dir, 3);
  1689. EXPECT_EQ(s03, Status::OK());
  1690. std::shared_ptr<TensorTransform> to_vectors03 = std::make_shared<text::ToVectors>(glove03);
  1691. auto transform03 = Execute({to_vectors03});
  1692. Status status03 = transform03(token, &lookup_result);
  1693. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected);
  1694. EXPECT_TRUE(status03.IsOk());
  1695. }
  1696. /// Feature: ToVectors
  1697. /// Description: test basic usage of ToVectors and the GloVe with default parameter
  1698. /// Expectation: get correct MSTensor
  1699. TEST_F(MindDataTestExecute, TestToVectorsParamForGloVe) {
  1700. MS_LOG(INFO) << "Doing MindDataTestExecute-TestToVectorsParamForGloVe.";
  1701. std::shared_ptr<Tensor> de_tensor01;
  1702. Tensor::CreateScalar<std::string>("none", &de_tensor01);
  1703. auto token01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor01));
  1704. std::shared_ptr<Tensor> de_tensor02;
  1705. Tensor::CreateScalar<std::string>("ok", &de_tensor02);
  1706. auto token02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor02));
  1707. std::shared_ptr<Tensor> de_tensor03;
  1708. Tensor::CreateScalar<std::string>("OK", &de_tensor03);
  1709. auto token03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor03));
  1710. mindspore::MSTensor lookup_result;
  1711. // Create expected output.
  1712. dsize_t dim = 6;
  1713. std::shared_ptr<Tensor> de_expected01;
  1714. std::vector<float> expected01 = {0, 0, 0, 0, 0, 0};
  1715. ASSERT_OK(Tensor::CreateFromVector(expected01, TensorShape({dim}), &de_expected01));
  1716. auto ms_expected01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected01));
  1717. std::shared_ptr<Tensor> de_expected02;
  1718. std::vector<float> expected02 = {-1, -1, -1, -1, -1, -1};
  1719. ASSERT_OK(Tensor::CreateFromVector(expected02, TensorShape({dim}), &de_expected02));
  1720. auto ms_expected02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected02));
  1721. std::shared_ptr<Tensor> de_expected03;
  1722. std::vector<float> expected03 = {0.418, 0.24968, -0.41242, 0.1217, 0.34527, -0.04445718411};
  1723. ASSERT_OK(Tensor::CreateFromVector(expected03, TensorShape({dim}), &de_expected03));
  1724. auto ms_expected03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected03));
  1725. // Transform params.
  1726. std::string vectors_dir = "data/dataset/testGloVe/glove.6B.test.txt";
  1727. std::shared_ptr<GloVe> glove;
  1728. Status s = GloVe::BuildFromFile(&glove, vectors_dir);
  1729. EXPECT_EQ(s, Status::OK());
  1730. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(glove);
  1731. auto transform01 = Execute({to_vectors01});
  1732. Status status01 = transform01(token01, &lookup_result);
  1733. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected01);
  1734. EXPECT_TRUE(status01.IsOk());
  1735. std::vector<float> unknown_init = {-1, -1, -1, -1, -1, -1};
  1736. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(glove, unknown_init);
  1737. auto transform02 = Execute({to_vectors02});
  1738. Status status02 = transform02(token01, &lookup_result);
  1739. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected02);
  1740. EXPECT_TRUE(status02.IsOk());
  1741. std::shared_ptr<TensorTransform> to_vectors03 = std::make_shared<text::ToVectors>(glove, unknown_init);
  1742. auto transform03 = Execute({to_vectors03});
  1743. Status status03 = transform03(token02, &lookup_result);
  1744. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected03);
  1745. EXPECT_TRUE(status03.IsOk());
  1746. std::shared_ptr<TensorTransform> to_vectors04 = std::make_shared<text::ToVectors>(glove, unknown_init, true);
  1747. auto transform04 = Execute({to_vectors04});
  1748. Status status04 = transform04(token03, &lookup_result);
  1749. EXPECT_MSTENSOR_EQ(lookup_result, ms_expected03);
  1750. EXPECT_TRUE(status04.IsOk());
  1751. }
  1752. /// Feature: ToVectors
  1753. /// Description: test invalid parameter of ToVectors for GloVe
  1754. /// Expectation: throw exception correctly
  1755. TEST_F(MindDataTestExecute, TestToVectorsWithInvalidParamForGloVe) {
  1756. MS_LOG(INFO) << "Doing MindDataTestExecute-TestToVectorsWithInvalidParamForGloVe.";
  1757. std::shared_ptr<Tensor> de_tensor;
  1758. Tensor::CreateScalar<std::string>("none", &de_tensor);
  1759. auto token = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  1760. mindspore::MSTensor lookup_result;
  1761. // Transform params.
  1762. std::string vectors_dir = "data/dataset/testGloVe/glove.6B.test.txt";
  1763. std::shared_ptr<GloVe> glove01;
  1764. Status s = GloVe::BuildFromFile(&glove01, vectors_dir);
  1765. EXPECT_EQ(s, Status::OK());
  1766. std::vector<float> unknown_init = {-1, -1, -1, -1};
  1767. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(glove01, unknown_init);
  1768. auto transform01 = Execute({to_vectors01});
  1769. Status status01 = transform01(token, &lookup_result);
  1770. EXPECT_FALSE(status01.IsOk());
  1771. std::shared_ptr<GloVe> glove02 = nullptr;
  1772. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(glove02);
  1773. auto transform02 = Execute({to_vectors02});
  1774. Status status02 = transform02(token, &lookup_result);
  1775. EXPECT_FALSE(status02.IsOk());
  1776. }
  1777. /// Feature: CharNGram
  1778. /// Description: test basic usage of CharNGram and the ToVectors with default parameter
  1779. /// Expectation: get correct MSTensor
  1780. TEST_F(MindDataTestExecute, TestCharNGramParam) {
  1781. MS_LOG(INFO) << "Doing MindDataTestExecute-TestCharNGramParam.";
  1782. std::shared_ptr<Tensor> de_tensor;
  1783. Tensor::CreateScalar<std::string>("the", &de_tensor);
  1784. auto token = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  1785. mindspore::MSTensor lookup_result;
  1786. // Create expected output.
  1787. std::shared_ptr<Tensor> de_expected01;
  1788. std::vector<float> expected01 = {-0.840079, -0.0270003, -0.833472, 0.588367, -0.210012};
  1789. ASSERT_OK(Tensor::CreateFromVector(expected01, &de_expected01));
  1790. auto ms_expected01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected01));
  1791. std::shared_ptr<Tensor> de_expected02;
  1792. std::vector<float> expected02 = {-1.34122, 0.0442693, -0.48697, 0.662939, -0.367669};
  1793. ASSERT_OK(Tensor::CreateFromVector(expected02, &de_expected02));
  1794. auto ms_expected02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected02));
  1795. // Transform params.
  1796. std::string vectors_dir = "data/dataset/testVectors/char_n_gram_20.txt";
  1797. std::shared_ptr<CharNGram> char_n_gram01;
  1798. Status s01 = CharNGram::BuildFromFile(&char_n_gram01, vectors_dir);
  1799. EXPECT_EQ(s01, Status::OK());
  1800. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(char_n_gram01);
  1801. auto transform01 = Execute({to_vectors01});
  1802. Status status01 = transform01(token, &lookup_result);
  1803. EXPECT_EQ(lookup_result.Shape(), ms_expected01.Shape());
  1804. EXPECT_TRUE(status01.IsOk());
  1805. std::shared_ptr<CharNGram> char_n_gram02;
  1806. Status s02 = CharNGram::BuildFromFile(&char_n_gram02, vectors_dir, 100);
  1807. EXPECT_EQ(s02, Status::OK());
  1808. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(char_n_gram02);
  1809. auto transform02 = Execute({to_vectors02});
  1810. Status status02 = transform02(token, &lookup_result);
  1811. EXPECT_EQ(lookup_result.Shape(), ms_expected01.Shape());
  1812. EXPECT_TRUE(status02.IsOk());
  1813. std::shared_ptr<CharNGram> char_n_gram03;
  1814. Status s03 = CharNGram::BuildFromFile(&char_n_gram03, vectors_dir, 18);
  1815. EXPECT_EQ(s03, Status::OK());
  1816. std::shared_ptr<TensorTransform> to_vectors03 = std::make_shared<text::ToVectors>(char_n_gram03);
  1817. auto transform03 = Execute({to_vectors03});
  1818. Status status03 = transform03(token, &lookup_result);
  1819. EXPECT_EQ(lookup_result.Shape(), ms_expected02.Shape());
  1820. EXPECT_TRUE(status03.IsOk());
  1821. }
  1822. /// Feature: CharNGram
  1823. /// Description: test basic usage of ToVectors and the CharNGram with default parameter
  1824. /// Expectation: get correct MSTensor
  1825. TEST_F(MindDataTestExecute, TestToVectorsParamForCharNGram) {
  1826. MS_LOG(INFO) << "Doing MindDataTestExecute-TestToVectorsParamForCharNGram.";
  1827. std::shared_ptr<Tensor> de_tensor01;
  1828. Tensor::CreateScalar<std::string>("none", &de_tensor01);
  1829. auto token01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor01));
  1830. std::shared_ptr<Tensor> de_tensor02;
  1831. Tensor::CreateScalar<std::string>("the", &de_tensor02);
  1832. auto token02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor02));
  1833. std::shared_ptr<Tensor> de_tensor03;
  1834. Tensor::CreateScalar<std::string>("The", &de_tensor03);
  1835. auto token03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor03));
  1836. mindspore::MSTensor lookup_result;
  1837. // Create expected output.
  1838. std::shared_ptr<Tensor> de_expected01;
  1839. std::vector<float> expected01(5, 0);
  1840. ASSERT_OK(Tensor::CreateFromVector(expected01, &de_expected01));
  1841. auto ms_expected01 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected01));
  1842. std::shared_ptr<Tensor> de_expected02;
  1843. std::vector<float> expected02(5, -1);
  1844. ASSERT_OK(Tensor::CreateFromVector(expected02, &de_expected02));
  1845. auto ms_expected02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected02));
  1846. std::shared_ptr<Tensor> de_expected03;
  1847. std::vector<float> expected03 = {-0.840079, -0.0270003, -0.833472, 0.588367, -0.210012};
  1848. ASSERT_OK(Tensor::CreateFromVector(expected03, &de_expected03));
  1849. auto ms_expected03 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_expected03));
  1850. // Transform params.
  1851. std::string vectors_dir = "data/dataset/testVectors/char_n_gram_20.txt";
  1852. std::shared_ptr<CharNGram> char_n_gram;
  1853. Status s = CharNGram::BuildFromFile(&char_n_gram, vectors_dir);
  1854. EXPECT_EQ(s, Status::OK());
  1855. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(char_n_gram);
  1856. auto transform01 = Execute({to_vectors01});
  1857. Status status01 = transform01(token01, &lookup_result);
  1858. EXPECT_EQ(lookup_result.Shape(), ms_expected01.Shape());
  1859. EXPECT_TRUE(status01.IsOk());
  1860. std::vector<float> unknown_init(5, -1);
  1861. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(char_n_gram, unknown_init);
  1862. auto transform02 = Execute({to_vectors02});
  1863. Status status02 = transform02(token01, &lookup_result);
  1864. EXPECT_EQ(lookup_result.Shape(), ms_expected02.Shape());
  1865. EXPECT_TRUE(status02.IsOk());
  1866. std::shared_ptr<TensorTransform> to_vectors03 = std::make_shared<text::ToVectors>(char_n_gram, unknown_init);
  1867. auto transform03 = Execute({to_vectors03});
  1868. Status status03 = transform03(token02, &lookup_result);
  1869. EXPECT_EQ(lookup_result.Shape(), ms_expected03.Shape());
  1870. EXPECT_TRUE(status03.IsOk());
  1871. std::shared_ptr<TensorTransform> to_vectors04 = std::make_shared<text::ToVectors>(char_n_gram, unknown_init, true);
  1872. auto transform04 = Execute({to_vectors04});
  1873. Status status04 = transform04(token03, &lookup_result);
  1874. EXPECT_EQ(lookup_result.Shape(), ms_expected03.Shape());
  1875. EXPECT_TRUE(status04.IsOk());
  1876. }
  1877. /// Feature: CharNGram
  1878. /// Description: test invalid parameter of ToVectors
  1879. /// Expectation: throw exception correctly
  1880. TEST_F(MindDataTestExecute, TestToVectorsWithInvalidParamForCharNGram) {
  1881. MS_LOG(INFO) << "Doing MindDataTestExecute-TestToVectorsWithInvalidParamForCharNGram.";
  1882. std::shared_ptr<Tensor> de_tensor;
  1883. Tensor::CreateScalar<std::string>("none", &de_tensor);
  1884. auto token = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(de_tensor));
  1885. mindspore::MSTensor lookup_result;
  1886. // Transform params.
  1887. std::string vectors_dir = "data/dataset/testVectors/char_n_gram_20.txt";
  1888. std::shared_ptr<CharNGram> char_n_gram01;
  1889. Status s = CharNGram::BuildFromFile(&char_n_gram01, vectors_dir);
  1890. EXPECT_EQ(s, Status::OK());
  1891. std::vector<float> unknown_init(4, -1);
  1892. std::shared_ptr<TensorTransform> to_vectors01 = std::make_shared<text::ToVectors>(char_n_gram01, unknown_init);
  1893. auto transform01 = Execute({to_vectors01});
  1894. Status status01 = transform01(token, &lookup_result);
  1895. EXPECT_FALSE(status01.IsOk());
  1896. std::shared_ptr<CharNGram> char_n_gram02 = nullptr;
  1897. std::shared_ptr<TensorTransform> to_vectors02 = std::make_shared<text::ToVectors>(char_n_gram02);
  1898. auto transform02 = Execute({to_vectors02});
  1899. Status status02 = transform02(token, &lookup_result);
  1900. EXPECT_FALSE(status02.IsOk());
  1901. }
  1902. // Feature: DBToAmplitude
  1903. // Description: test DBToAmplitude in eager mode
  1904. // Expectation: the data is processed successfully
  1905. TEST_F(MindDataTestExecute, TestDBToAmplitudeWithEager) {
  1906. MS_LOG(INFO) << "Doing MindDataTestExecute-TestDBToAmplitudeWithEager.";
  1907. // Original waveform
  1908. std::vector<float> labels = {
  1909. 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02,
  1910. 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02,
  1911. 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02,
  1912. 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02,
  1913. 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03};
  1914. std::shared_ptr<Tensor> input;
  1915. ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input));
  1916. auto input_02 = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input));
  1917. std::shared_ptr<TensorTransform> DBToAmplitude_01 = std::make_shared<audio::DBToAmplitude>(2, 2);
  1918. mindspore::dataset::Execute Transform01({DBToAmplitude_01});
  1919. // Filtered waveform by DBToAmplitude
  1920. Status s01 = Transform01(input_02, &input_02);
  1921. EXPECT_TRUE(s01.IsOk());
  1922. }
  1923. /// Feature: SlidingWindowCmn
  1924. /// Description: test basic function of SlidingWindowCmn
  1925. /// Expectation: get correct number of data
  1926. TEST_F(MindDataTestExecute, TestSlidingWindowCmn) {
  1927. MS_LOG(INFO) << "Doing MindDataTestExecute-TestSlidingWindowCmn.";
  1928. std::shared_ptr<Tensor> input_tensor_;
  1929. int32_t cmn_window = 500;
  1930. int32_t min_cmn_window = 50;
  1931. bool center = false;
  1932. bool norm_vars = false;
  1933. // create tensor shape
  1934. TensorShape s = TensorShape({2, 2, 500});
  1935. // init input vector
  1936. std::vector<float> input_vec(s.NumOfElements());
  1937. for (int idx = 0; idx < input_vec.size(); ++idx) {
  1938. input_vec[idx] = std::rand() % (1000) / (1000.0f);
  1939. }
  1940. ASSERT_OK(Tensor::CreateFromVector(input_vec, s, &input_tensor_));
  1941. auto input_ms = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input_tensor_));
  1942. std::shared_ptr<TensorTransform> sliding_window_cmn_op =
  1943. std::make_shared<audio::SlidingWindowCmn>(cmn_window, min_cmn_window, center, norm_vars);
  1944. // apply sliding_window_cmn
  1945. mindspore::dataset::Execute Transform({sliding_window_cmn_op});
  1946. Status status = Transform(input_ms, &input_ms);
  1947. EXPECT_TRUE(status.IsOk());
  1948. }
  1949. /// Feature: SlidingWindowCmn
  1950. /// Description: test wrong input args of SlidingWindowCmn
  1951. /// Expectation: get nullptr of iterator
  1952. TEST_F(MindDataTestExecute, TestSlidingWindowCmnWrongArgs) {
  1953. MS_LOG(INFO) << "Doing MindDataTestExecute-TestSlidingWindowCmnWrongArgs.";
  1954. std::shared_ptr<Tensor> input_tensor_;
  1955. // create tensor shape
  1956. TensorShape s = TensorShape({2, 2, 500});
  1957. // init input vector
  1958. std::vector<float> input_vec(s.NumOfElements());
  1959. for (int idx = 0; idx < input_vec.size(); ++idx) {
  1960. input_vec[idx] = std::rand() % (1000) / (1000.0f);
  1961. }
  1962. ASSERT_OK(Tensor::CreateFromVector(input_vec, s, &input_tensor_));
  1963. auto input_ms = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(input_tensor_));
  1964. // SlidingWindowCmn: cmn_window must be greater than or equal to 0.
  1965. std::shared_ptr<TensorTransform> sliding_window_cmn_op_1 =
  1966. std::make_shared<audio::SlidingWindowCmn>(-1, 100, false, false);
  1967. mindspore::dataset::Execute Transform_1({sliding_window_cmn_op_1});
  1968. Status status_1 = Transform_1(input_ms, &input_ms);
  1969. EXPECT_FALSE(status_1.IsOk());
  1970. // SlidingWindowCmn: min_cmn_window must be greater than or equal to 0.
  1971. std::shared_ptr<TensorTransform> sliding_window_cmn_op_2 =
  1972. std::make_shared<audio::SlidingWindowCmn>(500, -1, false, false);
  1973. mindspore::dataset::Execute Transform_2({sliding_window_cmn_op_2});
  1974. Status status_2 = Transform_2(input_ms, &input_ms);
  1975. EXPECT_FALSE(status_2.IsOk());
  1976. }
  1977. /// Feature: AutoAugment
  1978. /// Description: test AutoAugment eager
  1979. /// Expectation: load one image data and process auto augmentation with given policy on it.
  1980. TEST_F(MindDataTestExecute, TestAutoAugmentEager) {
  1981. MS_LOG(INFO) << "Doing MindDataTestExecute-TestAutoAugmentEager.";
  1982. // Read images
  1983. auto image = ReadFileToTensor("data/dataset/apple.jpg");
  1984. // Transform params
  1985. auto decode = vision::Decode();
  1986. auto auto_augment_op = vision::AutoAugment(AutoAugmentPolicy::kImageNet, InterpolationMode::kLinear, {0, 0, 0});
  1987. auto transform = Execute({decode, auto_augment_op});
  1988. Status rc = transform(image, &image);
  1989. EXPECT_EQ(rc, Status::OK());
  1990. }
  1991. /// Feature: Spectrogram.
  1992. /// Description: test Spectrogram in eager mode.
  1993. /// Expectation: the data is processed successfully.
  1994. TEST_F(MindDataTestExecute, TestSpectrogramEager) {
  1995. MS_LOG(INFO) << "Doing MindDataTestExecute-SpectrogramEager.";
  1996. std::shared_ptr<Tensor> test_input_tensor;
  1997. std::vector<double> waveform = {1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1};
  1998. ASSERT_OK(Tensor::CreateFromVector(waveform, TensorShape({1, (long)waveform.size()}), &test_input_tensor));
  1999. auto input_tensor = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(test_input_tensor));
  2000. std::shared_ptr<TensorTransform> spectrogram =
  2001. std::make_shared<audio::Spectrogram>(8, 8, 4, 0, WindowType::kHann, 2., false, true, BorderType::kReflect, true);
  2002. auto transform = Execute({spectrogram});
  2003. Status rc = transform({input_tensor}, &input_tensor);
  2004. ASSERT_TRUE(rc.IsOk());
  2005. }
  2006. /// Feature: SpectralCentroid.
  2007. /// Description: test SpectralCentroid in eager mode.
  2008. /// Expectation: the data is processed successfully.
  2009. TEST_F(MindDataTestExecute, TestSpectralCentroidEager) {
  2010. MS_LOG(INFO) << "Doing MindDataTestExecute-SpectralCentroidEager.";
  2011. std::shared_ptr<Tensor> test_input_tensor;
  2012. std::vector<double> waveform = {1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1};
  2013. ASSERT_OK(Tensor::CreateFromVector(waveform, TensorShape({1, (long)waveform.size()}), &test_input_tensor));
  2014. auto input_tensor = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(test_input_tensor));
  2015. std::shared_ptr<TensorTransform> spectral_centroid =
  2016. std::make_shared<audio::SpectralCentroid>(44100, 8, 8, 4, 1, WindowType::kHann);
  2017. auto transform = Execute({spectral_centroid});
  2018. Status rc = transform({input_tensor}, &input_tensor);
  2019. ASSERT_TRUE(rc.IsOk());
  2020. }
  2021. /// Feature: SpectralCentroid.
  2022. /// Description: test wrong input args of SpectralCentroid in eager mode.
  2023. /// Expectation: Expectation: throw exception correctly
  2024. TEST_F(MindDataTestExecute, TestSpectralCentroidWithWrongArg) {
  2025. MS_LOG(INFO) << "Doing MindDataTestExecute-TestSpectralCentroidWithWrongArg.";
  2026. std::shared_ptr<Tensor> test_input_tensor;
  2027. std::vector<double> waveform = {1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1};
  2028. ASSERT_OK(Tensor::CreateFromVector(waveform, TensorShape({1, (long)waveform.size()}), &test_input_tensor));
  2029. auto input_tensor = mindspore::MSTensor(std::make_shared<mindspore::dataset::DETensor>(test_input_tensor));
  2030. // Check sample_rate
  2031. MS_LOG(INFO) << "sample_rate is zero.";
  2032. std::shared_ptr<TensorTransform> spectral_centroid =
  2033. std::make_shared<audio::SpectralCentroid>(0, 8, 8, 4, 1, WindowType::kHann);
  2034. auto transform = Execute({spectral_centroid});
  2035. Status rc = transform({input_tensor}, &input_tensor);
  2036. EXPECT_FALSE(rc.IsOk());
  2037. }