C#音频包解决方案

时间:2022-08-29 14:15:32
我想做一个发音的词典,分为真人发音和TTS机器发音。

真人发音有一个语音包,里面按字母表顺序命名了26个英文单词首字母的文件夹。文件夹内以单词名称命名的mp3文件为对应文件名的发音。


词典想实现真人发音和机器发音的选择性发音。

因为真人发音所占空间太大,如果引入C#资源,软件发布后不方便下载传播。

所以我想做一个真人发音的包,单独下载导入。请问C#中如何实现?

10 个解决方案

#1


你可以用接口比如一个ISound接口实现实现真人发音和机器发音的选择性发音吧,在真人发音的包中包含一个dll以及语音包,导入的时候导入那个dll,在通过反射载入真人发音对接口ISound的实现类,这样就可以实现真人发音和机器发音的选择性发音的目的了。

#2


如何将音频做成dll导入,能否解释的再仔细些

#3


我也不知道

#4


我也不知道

#6


如果是现成的mp3文件集, 怎么样变成dll导入程序中充当资源呢?

#7


关注

#8


我想lz你理解错了,这里所说的dll是干的是读取mp3文件集并发声的功能,而不是你想的那样将mp3打包成dll就可以发声了,如果你想打包,mp3文件也可以打包到dll作为一个资源的,可能是以二进制流的形式吧。
引用 6 楼 matee 的回复:
如果是现成的mp3文件集, 怎么样变成dll导入程序中充当资源呢?

#9


恩。我想我需要的是这个 :)

mp3文件也可以打包到dll作为一个资源的,可能是以二进制流的形式吧。 


请问具体如何实现呢?能详细说明一下吗?非常感谢。

#10


System.Reflection.Assembly r = Assembly.GetExecutingAssembly();
Stream temp=r.GetManifestResourceStream("命名空间.资源名");
orgbuffer = new byte[temp.Length];
temp.Read(orgbuffer,0,(int)temp.Length);
temp.Close();
以上是获得二进制流的方法,你应该有办法把这个二进制流转成mp3音频播放吧

#1


你可以用接口比如一个ISound接口实现实现真人发音和机器发音的选择性发音吧,在真人发音的包中包含一个dll以及语音包,导入的时候导入那个dll,在通过反射载入真人发音对接口ISound的实现类,这样就可以实现真人发音和机器发音的选择性发音的目的了。

#2


如何将音频做成dll导入,能否解释的再仔细些

#3


我也不知道

#4


我也不知道

#5


#6


如果是现成的mp3文件集, 怎么样变成dll导入程序中充当资源呢?

#7


关注

#8


我想lz你理解错了,这里所说的dll是干的是读取mp3文件集并发声的功能,而不是你想的那样将mp3打包成dll就可以发声了,如果你想打包,mp3文件也可以打包到dll作为一个资源的,可能是以二进制流的形式吧。
引用 6 楼 matee 的回复:
如果是现成的mp3文件集, 怎么样变成dll导入程序中充当资源呢?

#9


恩。我想我需要的是这个 :)

mp3文件也可以打包到dll作为一个资源的,可能是以二进制流的形式吧。 


请问具体如何实现呢?能详细说明一下吗?非常感谢。

#10


System.Reflection.Assembly r = Assembly.GetExecutingAssembly();
Stream temp=r.GetManifestResourceStream("命名空间.资源名");
orgbuffer = new byte[temp.Length];
temp.Read(orgbuffer,0,(int)temp.Length);
temp.Close();
以上是获得二进制流的方法,你应该有办法把这个二进制流转成mp3音频播放吧