Model.swift 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. import Foundation
  2. func getResource(_ forResource: String, _ ofType: String) -> String {
  3. let path = Bundle.main.path(forResource: forResource, ofType: ofType)
  4. precondition(
  5. path != nil,
  6. "\(forResource).\(ofType) does not exist!\n" + "Remember to change \n"
  7. + " Build Phases -> Copy Bundle Resources\n" + "to add it!"
  8. )
  9. return path!
  10. }
  11. /// Please refer to
  12. /// https://k2-fsa.github.io/sherpa/ncnn/pretrained_models/index.html
  13. /// to download pre-trained models
  14. /// csukuangfj/sherpa-ncnn-conv-emformer-transducer-2022-12-06 (Chinese + English)
  15. func getMultilingualModelConfig2022_12_06() -> SherpaNcnnModelConfig {
  16. let encoderParam = getResource("encoder_jit_trace-pnnx.ncnn", "param")
  17. let encoderBin = getResource("encoder_jit_trace-pnnx.ncnn", "bin")
  18. let decoderParam = getResource("decoder_jit_trace-pnnx.ncnn", "param")
  19. let decoderBin = getResource("decoder_jit_trace-pnnx.ncnn", "bin")
  20. let joinerParam = getResource("joiner_jit_trace-pnnx.ncnn", "param")
  21. let joinerBin = getResource("joiner_jit_trace-pnnx.ncnn", "bin")
  22. let tokens = getResource("tokens", "txt")
  23. return sherpaNcnnModelConfig(
  24. encoderParam: encoderParam,
  25. encoderBin: encoderBin,
  26. decoderParam: decoderParam,
  27. decoderBin: decoderBin,
  28. joinerParam: joinerParam,
  29. joinerBin: joinerBin,
  30. tokens: tokens,
  31. numThreads: 4
  32. )
  33. }
  34. /// csukuangfj/sherpa-ncnn-conv-emformer-transducer-2022-12-06 (Chinese + English)
  35. func getMultilingualModelConfig2022_12_06_Int8() -> SherpaNcnnModelConfig {
  36. let encoderParam = getResource("encoder_jit_trace-pnnx.ncnn.int8", "param")
  37. let encoderBin = getResource("encoder_jit_trace-pnnx.ncnn.int8", "bin")
  38. let decoderParam = getResource("decoder_jit_trace-pnnx.ncnn", "param")
  39. let decoderBin = getResource("decoder_jit_trace-pnnx.ncnn", "bin")
  40. let joinerParam = getResource("joiner_jit_trace-pnnx.ncnn.int8", "param")
  41. let joinerBin = getResource("joiner_jit_trace-pnnx.ncnn.int8", "bin")
  42. let tokens = getResource("tokens", "txt")
  43. return sherpaNcnnModelConfig(
  44. encoderParam: encoderParam,
  45. encoderBin: encoderBin,
  46. decoderParam: decoderParam,
  47. decoderBin: decoderBin,
  48. joinerParam: joinerParam,
  49. joinerBin: joinerBin,
  50. tokens: tokens,
  51. numThreads: 4
  52. )
  53. }
  54. /// marcoyang/sherpa-ncnn-conv-emformer-transducer-small-2023-01-09 (English)
  55. func getConvEmformerSmallEnglishModelConfig2023_01_09() -> SherpaNcnnModelConfig {
  56. let encoderParam = getResource("encoder_jit_trace-pnnx.ncnn", "param")
  57. let encoderBin = getResource("encoder_jit_trace-pnnx.ncnn", "bin")
  58. let decoderParam = getResource("decoder_jit_trace-pnnx.ncnn", "param")
  59. let decoderBin = getResource("decoder_jit_trace-pnnx.ncnn", "bin")
  60. let joinerParam = getResource("joiner_jit_trace-pnnx.ncnn", "param")
  61. let joinerBin = getResource("joiner_jit_trace-pnnx.ncnn", "bin")
  62. let tokens = getResource("tokens", "txt")
  63. return sherpaNcnnModelConfig(
  64. encoderParam: encoderParam,
  65. encoderBin: encoderBin,
  66. decoderParam: decoderParam,
  67. decoderBin: decoderBin,
  68. joinerParam: joinerParam,
  69. joinerBin: joinerBin,
  70. tokens: tokens,
  71. numThreads: 4
  72. )
  73. }
  74. /// marcoyang/sherpa-ncnn-conv-emformer-transducer-small-2023-01-09 (English)
  75. func getConvEmformerSmallEnglishModelConfig2023_01_09_Int8() -> SherpaNcnnModelConfig {
  76. let encoderParam = getResource("encoder_jit_trace-pnnx.ncnn.int8", "param")
  77. let encoderBin = getResource("encoder_jit_trace-pnnx.ncnn.int8", "bin")
  78. let decoderParam = getResource("decoder_jit_trace-pnnx.ncnn", "param")
  79. let decoderBin = getResource("decoder_jit_trace-pnnx.ncnn", "bin")
  80. let joinerParam = getResource("joiner_jit_trace-pnnx.ncnn.int8", "param")
  81. let joinerBin = getResource("joiner_jit_trace-pnnx.ncnn.int8", "bin")
  82. let tokens = getResource("tokens", "txt")
  83. return sherpaNcnnModelConfig(
  84. encoderParam: encoderParam,
  85. encoderBin: encoderBin,
  86. decoderParam: decoderParam,
  87. decoderBin: decoderBin,
  88. joinerParam: joinerParam,
  89. joinerBin: joinerBin,
  90. tokens: tokens,
  91. numThreads: 4
  92. )
  93. }
  94. /// marcoyang/sherpa-ncnn-conv-emformer-transducer-small-2023-01-09 (English)
  95. func getLstmTransducerEnglish_2022_09_05() -> SherpaNcnnModelConfig {
  96. let encoderParam = getResource(
  97. "encoder_jit_trace-v2-iter-468000-avg-16-pnnx.ncnn", "param")
  98. let encoderBin = getResource(
  99. "encoder_jit_trace-v2-iter-468000-avg-16-pnnx.ncnn", "bin")
  100. let decoderParam = getResource(
  101. "decoder_jit_trace-v2-iter-468000-avg-16-pnnx.ncnn", "param")
  102. let decoderBin = getResource(
  103. "decoder_jit_trace-v2-iter-468000-avg-16-pnnx.ncnn", "bin")
  104. let joinerParam = getResource(
  105. "joiner_jit_trace-v2-iter-468000-avg-16-pnnx.ncnn", "param")
  106. let joinerBin = getResource(
  107. "joiner_jit_trace-v2-iter-468000-avg-16-pnnx.ncnn", "bin")
  108. let tokens = getResource("tokens", "txt")
  109. return sherpaNcnnModelConfig(
  110. encoderParam: encoderParam,
  111. encoderBin: encoderBin,
  112. decoderParam: decoderParam,
  113. decoderBin: decoderBin,
  114. joinerParam: joinerParam,
  115. joinerBin: joinerBin,
  116. tokens: tokens,
  117. numThreads: 4
  118. )
  119. }
  120. /// Please refer to
  121. /// https://k2-fsa.github.io/sherpa/ncnn/pretrained_models/index.html
  122. /// to add more models if you need