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

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