『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 3979|回复: 6

[基础教程] 用forked daapd 做TTS时不断循环如何破?

[复制链接]

20

主题

334

帖子

2485

积分

论坛积极会员

积分
2485
金钱
2151
HASS币
0
发表于 2021-1-10 02:27:47 | 显示全部楼层 |阅读模式
各位大神,我按照囧大的帖子,安装了用forked daapd 做airplay TTS,能够从homepod中播放声音,但是始终是不断循环播放,不知道为什么,我在forked daapd 的web界面中关闭了播放循环也没用。跪求大神指点。
回复

使用道具 举报

123

主题

4661

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16412
金钱
11666
HASS币
45
发表于 2021-1-10 09:51:01 | 显示全部楼层
挺奇怪啊,我这没这问题,只是有的时候播放不全,检查看看设置什么的吧。
回复

使用道具 举报

20

主题

334

帖子

2485

积分

论坛积极会员

积分
2485
金钱
2151
HASS币
0
 楼主| 发表于 2021-1-10 18:17:21 | 显示全部楼层
本帖最后由 BobbyCoon 于 2021-1-10 18:38 编辑
囧 发表于 2021-1-10 09:51
挺奇怪啊,我这没这问题,只是有的时候播放不全,检查看看设置什么的吧。 ...

囧大,设置我排查了三天了~~~,我用vlc没问题,用forked-daapd就有问题~,forked-daapd.conf文件如下,囧大帮忙看看,拜托!
# A quick guide to configuring forked-daapd:
#
# For regular use, the most important setting to configure is "directories",
# which should be the location of your media. Whatever user you have set as
# "uid" must have read access to this location. If the location is a network
# mount, please see the README.
#
# In all likelihood, that's all you need to do!

general {
        # Username
        # Make sure the user has read access to the library directories you set
         # below, and full access to the databases, log and local audio
        uid = "daapd"

        # Database location
#        db_path = "/var/cache/forked-daapd/songs3.db"

        # Log file and level
        # Available levels: fatal, log, warning, info, debug, spam
        logfile = "/var/log/forked-daapd.log"
        loglevel = log

        # Admin password for the web interface
        # Note that access to the web interface from computers in
        # "trusted_network" (see below) does not require password
#        admin_password = ""

        # Websocket port for the web interface. 
#        websocket_port = 3688

        # Sets who is allowed to connect without authorisation. This applies to
        # client types like Remotes, DAAP clients (iTunes) and to the web
        # interface. Options are "any", "localhost" or the prefix to one or
        # more ipv4/6 networks. The default is { "localhost", "192.168", "fd" }
#        trusted_networks = { "localhost", "192.168", "fd" }

        # Enable/disable IPv6
        ipv6 = yes

        # Location of cache database
#        cache_path = "/var/cache/forked-daapd/cache.db"

        # DAAP requests that take longer than this threshold (in msec) get their
        # replies cached for next time. Set to 0 to disable caching.
#        cache_daap_threshold = 1000

        # When starting playback, autoselect speaker (if none of the previously
        # selected speakers/outputs are available)
#        speaker_autoselect = yes

        # Most modern systems have a high-resolution clock, but if you are on an
        # unusual platform and experience audio drop-outs, you can try changing
        # this option
#        high_resolution_clock = yes
}

# Library configuration
library {
        # Name of the library as displayed by the clients
        # %h: hostname, %v: version
        name = "My Music on %h"

        # TCP port to listen on. Default port is 3689 (daap)
        port = 3689

        # Password for the library. Optional.
#        password = ""

        # Directories to index
        directories = { "/srv/music" }

        # Follow symlinks. Default: true.        
#        follow_symlinks = true

        # Directories containing podcasts
        # For each directory that is indexed the path is matched against these
        # names. If there is a match all items in the directory are marked as 
        # podcasts. Eg. if you index /srv/music, and your podcasts are in
        # /srv/music/Podcasts, you can set this to "/Podcasts".
        # (changing this setting only takes effect after rescan, see the README)
        podcasts = { "/Podcasts" }

        # Directories containing audiobooks
        # For each directory that is indexed the path is matched against these
        # names. If there is a match all items in the directory are marked as 
        # audiobooks.
        # (changing this setting only takes effect after rescan, see the README)
        audiobooks = { "/Audiobooks" }

        # Directories containing compilations (eg soundtracks)
        # For each directory that is indexed the path is matched against these
        # names. If there is a match all items in the directory are marked as 
        # compilations.
        # (changing this setting only takes effect after rescan, see the README)
        compilations = { "/Compilations" }

        # Compilations usually have many artists, and if you don't want every
        # artist to be listed when artist browsing in Remote, you can set
        # a single name which will be used for all music in the compilation dir
        # (changing this setting only takes effect after rescan, see the README)
        compilation_artist = "Various artists"

        # If your album and artist lists are cluttered, you can choose to hide
        # albums and artists with only one track. The tracks will still be
        # visible in other lists, e.g. songs and playlists. This setting
        # currently only works in some remotes.
#        hide_singles = false

        # Internet streams in your playlists will by default be shown in the
        # "Radio" library, like iTunes does. However, some clients (like
        # TunesRemote+) won't show the "Radio" library. If you would also like
        # to have them shown like normal playlists, you can enable this option.
#        radio_playlists = false

        # These are the default playlists. If you want them to have other names,
        # you can set it here.
#        name_library    = "Library"
#        name_music      = "Music"
#        name_movies     = "Movies"
#        name_tvshows    = "TV Shows"
#        name_podcasts   = "Podcasts"
#        name_audiobooks = "Audiobooks"
#        name_radio      = "Radio"

        # Artwork file names (without file type extension)
        # forked-daapd will look for jpg and png files with these base names
#        artwork_basenames = { "artwork", "cover", "Folder" }

        # Enable searching for artwork corresponding to each individual media
        # file instead of only looking for album artwork. This is disabled by
        # default to reduce cache size.
#        artwork_individual = false

        # File types the scanner should ignore
        # Non-audio files will never be added to the database, but here you
        # can prevent the scanner from even probing them. This might improve
        # scan time. By default .db, .ini, .db-journal, .pdf and .metadata are
        # ignored.
#        filetypes_ignore = { ".db", ".ini", ".db-journal", ".pdf", ".metadata" }

        # File paths the scanner should ignore
        # If you want to exclude files on a more advanced basis you can enter
        # one or more POSIX regular expressions, and any file with a matching
        # path will be ignored.
#        filepath_ignore = { "myregex" }

        # Disable startup file scanning
        # When forked-daapd starts it will do an initial file scan of your
        # library (and then watch it for changes). If you are sure your library
        # never changes while forked-daapd is not running, you can disable the
        # initial file scan and save some system ressources. Disabling this scan
        # may lead to forked-daapd's database coming out of sync with the
        # library. If that happens read the instructions in the README on how
        # to trigger a rescan.
#        filescan_disable = false

        # Should iTunes metadata override ours?
#        itunes_overrides = false

        # Should we import the content of iTunes smart playlists?
#        itunes_smartpl = false

        # Decoding options for DAAP clients
        # Since iTunes has native support for mpeg, mp4a, mp4v, alac and wav,
        # such files will be sent as they are. Any other formats will be decoded
        # to raw wav. If forked-daapd detects a non-iTunes DAAP client, it is
        # assumed to only support mpeg and wav, other formats will be decoded.
        # Here you can change when to decode. Note that these settings have no
        # effect on AirPlay.
        # Formats: mp4a, mp4v, mpeg, alac, flac, mpc, ogg, wma, wmal, wmav, aif, wav
        # Formats that should never be decoded
#        no_decode = { "format", "format" }
        # Formats that should always be decoded
#        force_decode = { "format", "format" }

        # Watch named pipes in the library for data and autostart playback when
        # there is data to be read. To exclude specific pipes from watching,
        # consider using the above _ignore options.
#        pipe_autostart = true

        # Enable automatic rating updates
        # If enabled, rating is automatically updated after a song has either been
        # played or skipped (only skipping to the next song is taken into account).
        # The calculation is taken from the beets plugin "mpdstats" (see 
        # https://beets.readthedocs.io/en/latest/plugins/mpdstats.html).
        # It consist of calculating a stable rating based only on the play- and 
        # skipcount and a rolling rating based on the current rating and the action
        # (played or skipped). Both results are combined with a mix-factor of 0.75:
        # new rating = 0.75 * stable rating + 0.25 * rolling rating)
#        rating_updates = false
}

# Local audio output
audio {
        # Name - used in the speaker list in Remote
        nickname = "Computer"
        
        # Type of the output (alsa, pulseaudio, dummy or disabled)
        type = "alsa"

        # For pulseaudio output, an optional server hostname or IP can be
        # specified (e.g. "localhost"). If not set, connection is made via local
        # socket.
#        server = ""

        # Audio PCM device name for local audio output - ALSA only
#        card = "default"

        # Mixer channel to use for volume control - ALSA only
        # If not set, PCM will be used if available, otherwise Master.
#        mixer = ""

        # Mixer device to use for volume control - ALSA only
        # If not set, the value for "card" will be used.
#        mixer_device = ""

        # Synchronization
        # If your local audio is out of sync with AirPlay, you can adjust this
        # value. Positive values correspond to moving local audio ahead,
        # negative correspond to delaying it. The unit is samples, where is
        # 44100 = 1 second. The offset must be between -44100 and 44100.
#        offset = 0
}

# Pipe output
# Allows forked-daapd to output audio data to a named pipe
#fifo {
#        nickname = "fifo"
#        path = "/path/to/fifo"
#}

# AirPlay/Airport Express device settings
# (make sure you get the capitalization of the device name right)
#airplay "My AirPlay device" {
        # forked-daapd's volume goes to 11! If that's more than you can handle
        # you can set a lower value here
#        max_volume = 11

        # Enable this option to exclude a particular AirPlay device from the
        # speaker list
#        exclude = false

        # AirPlay password
#        password = "s1kr3t"
#}

# Spotify settings (only have effect if Spotify enabled - see README/INSTALL)
spotify {
        # Directory where user settings should be stored (credentials)
#        settings_dir = "/var/cache/forked-daapd/libspotify"

        # Cache directory
#        cache_dir = "/tmp"

        # Set preferred bitrate for music streaming
        # 0: No preference (default), 1: 96kbps, 2: 160kbps, 3: 320kbps
#        bitrate = 0

        # Your Spotify playlists will by default be put in a "Spotify" playlist
        # folder. If you would rather have them together with your other
        # playlists you can set this option to true.
#        base_playlist_disable = false

        # Spotify playlists usually have many artist, and if you don't want
        # every artist to be listed when artist browsing in Remote, you can set
        # the artist_override flag to true. This will use the compilation_artist
        # as album artist for Spotify items.
#        artist_override = false

        # Similar to the different artists in Spotify playlists, the playlist
        # items belong to different albums, and if you do not want every album
        # to be listed when browsing in Remote, you can set the album_override
        # flag to true. This will use the playlist name as album name for
        # Spotify items. Notice that if an item is in more than one playlist,
        # it will only appear in one album when browsing (in which album is
        # random).
#        album_override = false
}

# MPD configuration (only have effect if MPD enabled - see README/INSTALL)
mpd {
        # TCP port to listen on for MPD client requests. 
        # Default port is 6600, set to 0 to disable MPD support.
#        port = 6600

        # HTTP port to listen for artwork requests (only supported by some MPD
        # clients and will need additional configuration in the MPD client to
        # work). Set to 0 to disable serving artwork over http.
#        http_port = 0

        # By default forked-daapd will - like iTunes - clear the playqueue if
        # playback stops. Setting clear_queue_on_stop_disable to true will keep
        # the playlist like MPD does. Note that some dacp clients do not show
        # the playqueue if playback is stopped.
#        clear_queue_on_stop_disable = false

        # Allows creating, deleting and modifying m3u playlists in the library directories.
        # Defaults to being disabled.
#        allow_modifying_stored_playlists = false

        # A directory in one of the library directories that will be used as the default
        # playlist directory. forked-dapd creates new playlists in this directory if only
        # a playlist name is provided by the mpd client (requires "allow_modify_stored_playlists"
        # set to true).
#        default_playlist_directory = ""
}

# SQLite configuration (allows to modify the operation of the SQLite databases)
# Make sure to read the SQLite documentation for the corresponding PRAGMA
# statements as changing them from the defaults may increase the possibility of
# database corruptions! By default the SQLite default values are used.
sqlite {
        # Cache size in number of db pages for the library database
        # (SQLite default page size is 1024 bytes and cache size is 2000 pages)
#        pragma_cache_size_library = 2000
        
        # Cache size in number of db pages for the daap cache database
        # (SQLite default page size is 1024 bytes and cache size is 2000 pages)
#        pragma_cache_size_cache = 2000
        
        # Sets the journal mode for the database
        # DELETE (default), TRUNCATE, PERSIST, MEMORY, WAL, OFF 
#        pragma_journal_mode = DELETE
        
        # Change the setting of the "synchronous" flag
        # 0: OFF, 1: NORMAL, 2: FULL (default)
#        pragma_synchronous = 2
        
        # Number of bytes set aside for memory-mapped I/O  for the library database
        # (requires sqlite 3.7.17 or later)
        # 0: disables mmap (default), any other value > 0: number of bytes for mmap
#        pragma_mmap_size_library = 0

        # Number of bytes set aside for memory-mapped I/O for the cache database
        # (requires sqlite 3.7.17 or later)
        # 0: disables mmap (default), any other value > 0: number of bytes for mmap
#        pragma_mmap_size_cache = 0

        # Should the database be vacuumed on startup? (increases startup time,
        # but may reduce database size). Default is yes.
#        vacuum = yes
}

回复

使用道具 举报

4

主题

107

帖子

845

积分

论坛技术达人

积分
845
金钱
728
HASS币
40
发表于 2021-1-11 17:03:29 | 显示全部楼层
囧 发表于 2021-1-10 09:51
挺奇怪啊,我这没这问题,只是有的时候播放不全,检查看看设置什么的吧。 ...

播放不全是不是说有时候最后一个字儿会念不出来?
回复

使用道具 举报

123

主题

4661

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16412
金钱
11666
HASS币
45
发表于 2021-1-11 17:22:22 | 显示全部楼层
seon 发表于 2021-1-11 17:03
播放不全是不是说有时候最后一个字儿会念不出来?

是的,大神,这是啥情况啊
回复

使用道具 举报

4

主题

107

帖子

845

积分

论坛技术达人

积分
845
金钱
728
HASS币
40
发表于 2021-1-11 21:53:41 | 显示全部楼层
囧 发表于 2021-1-11 17:22
是的,大神,这是啥情况啊

我之前用mpd做tts的时候也是这情况,我后来干脆在每句最后面加了个‘呵’字
之前没见别人提过这问题,我一直以为只有我这才有这个问题。换了俩树莓派都是一样的问题
具体原因我也不知道,linux上面的音频配置太复杂了,搞不懂
现在我干脆不用mpd了,python直接调用aplay做tts,aplay就没这个问题
回复

使用道具 举报

22

主题

319

帖子

3933

积分

论坛元老

Rank: 8Rank: 8

积分
3933
金钱
3609
HASS币
30
发表于 2021-1-28 23:40:49 | 显示全部楼层
clear_queue_on_stop_disable = false

去掉注释试试!
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-26 20:44 , Processed in 0.089632 second(s), 28 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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