请选择 进入手机版 | 继续访问电脑版

大蛇智能

 找回密码
 立即注册

扫一扫,访问微社区

搜索
热搜: 活动 交友 discuz
查看: 138|回复: 17

9-17 训练出来的模型要怎么使用呢?

[复制链接]

1

主题

13

帖子

75

积分

注册会员

Rank: 2

积分
75
发表于 2020-1-9 16:16:14 | 显示全部楼层 |阅读模式
求助一下大家,请问训练好的模型出来后要怎么使用呢?
请问有代码支持嘛?
回复

使用道具 举报

1

主题

13

帖子

75

积分

注册会员

Rank: 2

积分
75
 楼主| 发表于 2020-1-10 08:48:29 | 显示全部楼层
SOS很急...
真心不知道模型要咋调用, 或者有什么入手的方法嘛?
回复

使用道具 举报

127

主题

308

帖子

989

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
989
发表于 2020-1-10 10:17:33 | 显示全部楼层
可以用测试接口来进行使用。也可以按书上的介绍,封装成web服务使用。web服务的使用样子可以见我们的AI实验室中的项目。
回复

使用道具 举报

1

主题

13

帖子

75

积分

注册会员

Rank: 2

积分
75
 楼主| 发表于 2020-1-10 11:50:14 | 显示全部楼层
admin 发表于 2020-1-10 10:17
可以用测试接口来进行使用。也可以按书上的介绍,封装成web服务使用。web服务的使用样子可以见我们的AI实验 ...

请问测试接口怎么使用呢?
回复

使用道具 举报

1

主题

13

帖子

75

积分

注册会员

Rank: 2

积分
75
 楼主| 发表于 2020-1-10 11:51:17 | 显示全部楼层
admin 发表于 2020-1-10 10:17
可以用测试接口来进行使用。也可以按书上的介绍,封装成web服务使用。web服务的使用样子可以见我们的AI实验 ...

思路是不是加载模型 然后把书进入的拼音转矩阵 然后输入进入模型 等待输出的思路呢?
回复

使用道具 举报

1

主题

13

帖子

75

积分

注册会员

Rank: 2

积分
75
 楼主| 发表于 2020-1-10 16:00:57 | 显示全部楼层
admin 发表于 2020-1-10 10:17
可以用测试接口来进行使用。也可以按书上的介绍,封装成web服务使用。web服务的使用样子可以见我们的AI实验 ...

版主是否能够提供一个示例呢
可以有偿
回复

使用道具 举报

1

主题

13

帖子

75

积分

注册会员

Rank: 2

积分
75
 楼主| 发表于 2020-1-20 11:50:24 | 显示全部楼层
import tensorflow as tf
import numpy as np
from  train import inv_spectrogram
from  train import save_wav


tacotron = __import__("tacotron")
Tacotron = tacotron.Tacotron
_pad, _eos = '_', '~'  # 定义填充字符与结束字符
_padv = 0  # 定义填充的向量占位符
_stop_token_padv = 1  # 定义标志结束的向量占位符
_characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890!\'(),-.:;? '
symbols = [_pad, _eos] + list(_characters)  # 定义字典
index_symbols = {value: key for key, value in enumerate(symbols)}

inputseq = list(map(lambda x: [index_symbols[key] for key in x], ['bu4 jin3 yao4 xuan1 chuan2 shao3 sheng1 hai2 yao4 xuan1 chuan2 wan3 hun1 wan3 yu4 you1 sheng1 you1 yu4 xuan1 chuan2 sheng1 nan2 sheng1 nv3 dou1 yi2 yang4____________________________________________']))
seqlen = [len(x) for x in inputseq]


inputseq = tf.keras.preprocessing.sequence.pad_sequences(inputseq, padding='post', value=_padv)
datasetinputseq = tf.data.Dataset.from_tensor_slices(inputseq)

def sequence_to_text(sequence):  # 将向量转成字符
    strlen = len(symbols)
    return ''.join([symbols[i] for i in sequence if i < strlen])


#所需要的参数
max_frame_num = 1000  # 定义每个音频文件的最大帧数
sample_rate = 16000  # 定义音频文件的采样率
num_mels = 80
num_freq = 1025
outputs_per_step = 5

inputs = tf.placeholder(tf.int32, [None, None], 'inputs')
input_lengths = tf.placeholder(tf.int32, [None], 'input_lengths')
linear_targets = tf.placeholder(tf.float32, [None, None, num_freq], 'linear_targets')
mel_targets = tf.placeholder(tf.float32, [None, None, num_mels], 'mel_targets')
stop_token_targets = tf.placeholder(tf.float32, [None, None], 'stop_token_targets')


# 构建网络模型
global_step = tf.Variable(0, name='global_step', trainable=False)
with tf.variable_scope('model') as scope:
    model = tacotron.Tacotron(inputs, input_lengths, num_mels, outputs_per_step, num_freq,)


with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    saver = tf.train.import_meta_graph('./model-cpk/model.ckpt-9900.meta')
    saver.restore(sess, tf.train.latest_checkpoint('./model-cpk/'))
    graph = tf.get_default_graph()
    # inputs = graph.get_tensor_by_name("inputs:0")
    # input_lengths = graph.get_tensor_by_name("input_lengths:0")
    feed_dict = {inputs: np.array(inputseq), input_lengths: np.array(seqlen)}

    # 接下来,访问你想要执行的op
    print("model_linear_outputs",model.linear_outputs[0])
    print("feed_dict",feed_dict)
    input_seq, spectrogram, alignment = sess.run([
                        model.inputs[0], model.linear_outputs[0], model.alignments[0]],feed_dict=feed_dict)
    print(spectrogram.T)
    print(type(spectrogram.T))
    waveform = inv_spectrogram(spectrogram.T)
    save_wav(waveform,'step-888999-audio.wav')
    print(sequence_to_text(input_seq))
    tf.logging.info('Input: %s' % sequence_to_text(input_seq))
-------------------------------------------------------------------------------------------------
以上是我调用模型的代码示例,但是跑出来的音频声音只有1.6K  0秒 很快就没有了  请问有高手可以指点一二嘛?
我参照了train.py
目前还没有新的头绪。
回复

使用道具 举报

1

主题

13

帖子

75

积分

注册会员

Rank: 2

积分
75
 楼主| 发表于 2020-1-21 11:11:54 | 显示全部楼层
admin 发表于 2020-1-10 10:17
可以用测试接口来进行使用。也可以按书上的介绍,封装成web服务使用。web服务的使用样子可以见我们的AI实验 ...

作者你好,请问一下,模型的调用是否需要
    feed_dict = {inputs: np.array(seq), input_lengths: np.array(seqlen),
                 # linear_targets: linear_target, mel_targets: mel_target,
                 # stop_token_targets: stop_token_target
                 }
是否需要所有参数都传入呢,我看了以后
发现 #linear_targets: linear_target, mel_targets: mel_target,# stop_token_targets: stop_token_target这几个是需要有音频才有得生成的吧,那么有两个问题:1.我们是输入文字转语音,一开始是没有语音的,这几个参数是否可以不传
回复

使用道具 举报

1

主题

13

帖子

75

积分

注册会员

Rank: 2

积分
75
 楼主| 发表于 2020-1-21 11:13:41 | 显示全部楼层
第二个问题就是:我试了不传后面这几个参数,然后生成的语音效果只有一个音,调用书本中代码所有的变量传入便可以得到不错的效果,问题是我们自己输入的文字没法生成这些变量吧
回复

使用道具 举报

127

主题

308

帖子

989

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
989
发表于 2020-1-27 11:55:17 | 显示全部楼层
自己输入文字,需要使用与训练模型统一的字典文件转化成向量,再传入模型。转化过程中可以在flask后台去做。然后通过tf-serving发给模型
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|大蛇智能 ( 京ICP备 18026897 号 )

GMT+8, 2020-2-27 08:42 , Processed in 0.039776 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表