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

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