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

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