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

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