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

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